R 选择性轧制连接
有没有一种方法可以选择在加入时滚动哪些列?我试图建立缺少的列,有点像这样:R 选择性轧制连接,r,data.table,R,Data.table,有没有一种方法可以选择在加入时滚动哪些列?我试图建立缺少的列,有点像这样: dt <- structure(list(id = c(1L, 1L, 2L, 2L), c = c(1L, 2L, 1L, 2L), r = c(1L, 1L, 1L, 3L), ir1 = c(0.690859583206475, 0.0255513035226613, 0.381394953466952, 0.646164963953197), ir2 = c(0.869432955048978, 0.
dt <- structure(list(id = c(1L, 1L, 2L, 2L), c = c(1L, 2L, 1L, 2L),
r = c(1L, 1L, 1L, 3L), ir1 = c(0.690859583206475, 0.0255513035226613,
0.381394953466952, 0.646164963953197), ir2 = c(0.869432955048978,
0.911753778578714, 0.421218475792557, 0.653007542947307)), .Names = c("id",
"c", "r", "ir1", "ir2"), class = c("data.table", "data.frame"
), row.names = c(NA, -4L))
expander <- expand.grid(id = 1:2, c=1:2, r=1:5)
setkey(dt, id, c, r)
setkey(setDT(expander),id,c,r)
dt[expander, roll = TRUE]
dt对于expander
您可以执行CJ(1:2,1:2,1:5)
在前两列是固定数据帧时尝试。我解释得不好。很抱歉我试着使用cj,但设想它是第一个位置的数据帧,可以工作。您可以在data.frame
中执行相同的操作。类似于do.call(CJ,data.frame(id=1:2,c=1:2,r=1:2))
谢谢,我会尝试一下。@BrandonBertelsenCJ
可以很容易地破坏处理过程,你可以添加输入验证,类似于停止ifnot(prod(length(v1),length(v2),length(v3))<1e7)
,如果出现重复,则uniqueN
。对于expander
,您可以执行CJ(1:2,1:2,1:5)
在前两列为固定数据帧时尝试此操作。我解释得不好。很抱歉我试着使用cj,但设想它是第一个位置的数据帧,可以工作。您可以在data.frame
中执行相同的操作。类似于do.call(CJ,data.frame(id=1:2,c=1:2,r=1:2))
谢谢,我会尝试一下。@BrandonBertelsenCJ
可以很容易地破坏处理过程,你可以添加输入验证,类似于停止ifnot(prod(length(v1),length(v2),length(v3))<1e7)
,如果出现重复,那么uniqueN
。