假设我有两个数据帧创建从另一个数据帧条件上的另一列一个数据帧的不同列的新列
df1 <- data.frame(A = 1:6, B = 7:12, C = rep(1:2, 3))
df2 <- data.frame(C = 1:2, D = c("A", "B"))
我想创建DF1,其值的新E列是基于列C的值,然后可以在df2中连接到列D.例如,df1的第一行中的C值是“1”。并且df2中的列C的值1对应于列D的“A”,因此在df2中创建的值E应该来自列“A”,即1.
如Select values from different columns based on a variable containing column names所建议的,我可以通过两步骤:
setDT(df1)
setDT(df2)
df3 <- df1[df2, on = "C"] # step 1 combines the two data.tables
df3[, E := .SD[[.BY[[1]]]], by = D] # step 2
我的问题是:我们可以在一个步骤中做到这一点?此外,由于我的数据相对较大,这个原始解决方案的第一步需要很长时间。我们能以更快的速度做到这一点吗? 有什么建议吗?
如果它被标记为复制,则意味着答案是另一个问题;) –
遗憾的混乱,更新的问题是现在从原来的一个 –
多少行的实际数据DF2已经不同? – zx8754