首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据R中的data.table中的日期选择半最后的观测值

根据R中的data.table中的日期选择半最后的观测值
EN

Stack Overflow用户
提问于 2020-05-20 11:05:31
回答 1查看 16关注 0票数 0

我有一个包含日期的data.table (作为因子变量)。我正在从这些数据中获取滞后值。我如何才能告诉R只对日期为半个月的观测值运行获取滞后值?在本例中,这将是start == "01.01.2015"

示例数据:

代码语言:javascript
复制
ID <- rep("A5", 15)
product <- rep(c("prod1","prod2","prod3", "prod55", "prod4", "prod9", "prod83"),3)
start <- c(rep("01.01.2016", 3), rep("01.01.2015", 3), rep("01.01.2014",3),
           rep("01.01.2013",3), rep("01.01.2012",3))
prodID <- c(3,1,2,3,1,2,3,1,2,3,2,1,3,1,2)
mydata <- cbind(ID, product[1:15], start, prodID)
mydata <- as.data.table(mydata)

mydata[, (nameCols) := shift(.SD, 3, fill = "NA", "lead"), .SDcols= c("start", "V2"), by = "prodID"]

到目前为止,我已经使用这个来得到我的结果:

代码语言:javascript
复制
mydata[start == "01.01.2015"]

问题是,半最后的日期并不总是相同的日期。我将多次重复此过程,我希望避免手动指定此过程。有什么想法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-20 11:15:12

将数据转换为日期对象,并将sort转换为选择半最后日期。

代码语言:javascript
复制
library(data.table)

mydata[, start := as.IDate(start, '%d.%m.%Y')]
mydata[start == sort(unique(start), decreasing = TRUE)[2]]


#   ID     V2      start prodID
#1: A5 prod55 2015-01-01      3
#2: A5  prod4 2015-01-01      1
#3: A5  prod9 2015-01-01      2
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61904359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档