【发布时间】:2017-05-29 21:48:38
【问题描述】:
我有两个具有重复列的数据框,data1 和 data2。我现在正在运行一个 for 循环,每个循环将 data1 中的一列与 data2 中的整个列合并。例如
数据1:
1 1 3 4 4
2 5 2 4 2
2 2 8 8 0
数据2
1 4 5 4 5
2 9 3 4 5
2 7 4 8 0
columns 1 and 4 在 data1 和 data2 中重复。对于第一个循环,它合并
1
2
2
data2
1 4 5 4 5
2 9 3 4 5
2 7 4 8 0
所以想要的结果是
1 4 5 4 5
2 9 3 4 5
2 7 4 8 0
然后转到second column
1
5
2
它与data2合并
1 4 5 4 5
2 9 3 4 5
2 7 4 8 0
想要的结果是
1 1 4 5 4 5
5 2 9 3 4 5
2 2 7 4 8 0
我的想法是使用combine或者merge函数,但是这两个函数都没有达到想要的输出
for(i in 1:dim(data[2])){
datam_merge<- merge(data1[i], data2)
}
欢迎提出任何建议!
【问题讨论】:
-
重复的列是否总是在两个数据集中的相同位置(如您的示例中)?然后你可以简单地比较它们,然后只是
cbind。像indx <- colSums(data2 == data1) != nrow(data2) ; cbind(data2, data1[, indx])这样的东西。此外,您使用merges术语的方式对我来说没有意义 - 您可以忽略其中一个并继续前进,而不是合并重复的列,为什么要合并它们?