【发布时间】:2013-07-26 12:40:53
【问题描述】:
我想合并两个数据框,保持其中一个的原始行顺序(在下面的示例中为df.2)。
以下是一些示例数据(class 列中的所有值都在两个数据框中定义):
df.1 <- data.frame(class = c(1, 2, 3), prob = c(0.5, 0.7, 0.3))
df.2 <- data.frame(object = c('A', 'B', 'D', 'F', 'C'), class = c(2, 1, 2, 3, 1))
如果我这样做:
merge(df.2, df.1)
输出是:
class object prob
1 1 B 0.5
2 1 C 0.5
3 2 A 0.7
4 2 D 0.7
5 3 F 0.3
如果我添加sort = FALSE:
merge(df.2, df.1, sort = F)
结果是:
class object prob
1 2 A 0.7
2 2 D 0.7
3 1 B 0.5
4 1 C 0.5
5 3 F 0.3
但我想要的是:
class object prob
1 2 A 0.7
2 1 B 0.5
3 2 D 0.7
4 3 F 0.3
5 1 C 0.5
【问题讨论】:
-
问题没有很好的定义。如果合并结果中的行数比 df.2 多或少怎么办?
-
不可能,因为我使用 df.2 作为合并函数中的第一个变量...
-
没有。这是错误的。仍然不好定义。假设您在 df;2 中有一个在 df.1 中不存在的类。例如:
df.2<-data.frame(object=c('A','B','D','F','C'), class=c(2,1,2,4,1)) -
好吧,也许编辑更精确。无论如何,PAC 的答案可以完成我正在寻找的工作。谢谢帮助我改进问题。