R 基于分组的第二个数据帧,在一个数据帧中创建日期序列

R 基于分组的第二个数据帧,在一个数据帧中创建日期序列,r,data.table,R,Data.table,我有两个数据帧共享一个分组ID。我想根据另一个设置的条件在其中创建一个日期序列。MRE如下所示: jdates <- structure(list(Group.1 = c(8, 9), x = structure(c(16674, 16661), class = "Date")), .Names = c("Group.1", "x"), row.names = c(NA, -2L), class = c("data.table", "data.frame")) jtrying <-

我有两个数据帧共享一个分组ID。我想根据另一个设置的条件在其中创建一个日期序列。MRE如下所示:

jdates <- structure(list(Group.1 = c(8, 9), x = structure(c(16674, 16661), class = "Date")), .Names = c("Group.1", "x"), row.names = c(NA, -2L), class = c("data.table", "data.frame"))

jtrying <- structure(list(id = c(8, 8, 8, 9, 9, 9), values1 = 1:6, values2 = 7:12), .Names = c("id", "values1", "values2"), row.names = c(NA, -6L), class = c("data.table", "data.frame"))
我一直在尝试data.table方法,因为它们被认为更快(而且实际数据相当大),但实际上,任何(合理的)方法都可以

我的预期结果是data.frame,如下所示:

 jtrying
   id values1 values2       date
1:  8       1       7 2015-08-28
2:  8       2       8 2015-08-29
3:  8       3       9 2015-08-30
4:  9       4      10 2015-08-15
5:  9       5      11 2015-08-16
6:  9       6      12 2015-08-17
这是我要做的

jtrying[jdates, 
  date := seq(from=x+1, by=1, length.out=.N)
, on=c(id="Group.1"), by=.EACHI]
这种语法
X[Y,newcol:=…,on=c(Xcol=Ycol),by=.EACHI]
的工作原理如下:

jdates <- structure(list(Group.1 = c(8, 9), x = structure(c(16674, 16661), class = "Date")), .Names = c("Group.1", "x"), row.names = c(NA, -2L), class = c("data.table", "data.frame"))

jtrying <- structure(list(id = c(8, 8, 8, 9, 9, 9), values1 = 1:6, values2 = 7:12), .Names = c("id", "values1", "values2"), row.names = c(NA, -6L), class = c("data.table", "data.frame"))
  • X
    在上的
    中标识的列上与
    Y
    合并
  • X
    分别为合并列的每个值构建其
    newcol
    (即,
    by=.EACHI