匹配多个列并创建/更新选定的多个列

时间:2017-06-19 14:27:17

标签: r dataframe data.table dplyr

我想根据公共列的匹配({{}}更新数据框d_sub,其中包含两个新列xy(并排除列xy)父数据框treatment中的{1}},replicate}。

d

与普通set.seed(0) x <- rep(1:10, 4) y <- sample(c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)) treatment <- sample(gl(8, 5, 40, labels=letters[1:8])) replicate <- sample(gl(8, 5, 40)) d <- data.frame(x=x, y=y, xy=x*y, treatment=treatment, replicate=replicate) d_sub <- d[sample(nrow(d),6),4:5] d_sub # treatment replicate # 32 b 2 # 11 h 7 # 9 h 3 # 20 e 3 # 10 b 5 # 7 d 3 或其他方法mentioned here不同,我只需要提取几个列,如下面的预期输出所示:

merge

请注意,此处输出中排除了# treatment replicate x y # 32 b 2 2 8.998847 # 11 h 7 1 5.082928 # 9 h 3 2 7.050445 # 20 e 3 10 10.145350 # 10 b 5 10 7.941056 # 7 d 3 7 6.814287 列!在我最初的问题中,输出中有数千列我不需要的列,而不是所需的极少列。我特别想找xy以外的其他方法来了解我是否能以一种以内存效率的方式实现解决方案。

1 个答案:

答案 0 :(得分:1)

我想之前已经问过这个,但你要找的是:

merge(d_sub, d, by=c("treatment", "replicate"))

或:

d_sub <- merge(d_sub, d, by=c("treatment", "replicate"))