【发布时间】:2020-08-29 18:23:35
【问题描述】:
我有两个数据框:
x <- data.frame("coi" = c(0,1,NA,1),"v2" = c(7,8,9,NA))
y <- data.frame("c1" = c(0,-1,1), "c2" = c(0,-1,-1), "coi" = c(0,1,NA))
> x
coi v2
1 0 7
2 1 8
3 NA 9
4 1 NA
> y
c1 c2 coi
1 0 0 0
2 -1 -1 1
3 1 -1 NA
我想将它们合并成这样的:
> obj
coi v2 c1 c2
1 0 7 0 0
2 1 8 -1 -1
3 NA 9 1 -1
4 1 NA -1 -1
但是当我尝试时
merge(x,y)
我明白了:
coi v2 c1 c2
1 0 7 0 0
2 1 8 -1 -1
3 1 NA -1 -1
4 NA 9 1 -1
这还不错,但是无论如何要保留“coi”列中的原始顺序?
【问题讨论】:
-
不使用
merge。根据帮助页面:“默认情况下,行在公共列上按字典顺序排序,但对于 sort = FALSE,顺序未指定。” -
对。用一个简单的 plyr::join(x,y) 解决