【发布时间】:2018-09-04 17:03:10
【问题描述】:
library(data.table)
testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
"2013-10-05","2013-11-06")),
yr = c(2013,2013,2013,2013,2013),
mo = c(07,08,09,10,11),
da = c(02,03,04,05,06),
plant = LETTERS[1:5],
product = as.factor(letters[26:22]),
rating = runif(25))
我有这个数据集,我想为每一行创建一个类别或根据日期列在该行上命名。我想将此日期与另一个数据集中的日期进行比较:
library(lubridate)
splitDates <- ymd(c("2013-06-10", "2013-08-15", "2013-10-06"))
使用 splitDates 我想评估 splitDates 中的哪个值在进行测量之前最后出现。 (如果您想象从 2013 年 6 月 10 日到但不包括 2013 年 8 月 15 日进行了一项新实验,我想确定测量属于哪个实验)。
我可以看到这个新列中的前五行应该是这样的:
NewColumn <- c("2013-06-10", "2013-06-10", "2013-08-15", "2013-08-15", "2013-10-06")
date yr mo da plant product rating NewColumn
1: 2013-07-02 2013 7 2 A z 0.02522850 2013-06-10
2: 2013-08-03 2013 8 3 B y 0.28274066 2013-06-10
3: 2013-09-04 2013 9 4 C x 0.86314441 2013-08-15
4: 2013-10-05 2013 10 5 D w 0.01670862 2013-08-15
5: 2013-11-06 2013 11 6 E v 0.16034175 2013-10-06
...
我不知道该怎么做。
【问题讨论】:
-
如果我理解正确,这些值总是来自
splitDates -
testset[, v := splitDates[findInterval(date, splitDates)]]似乎有效?相关:stackoverflow.com/q/15712826
标签: r date split data.table