我有两个数据框,包含一些常见和一些不常见的元素。 例如:
x <- data.frame(name=c("a","a","a","a"), dep=c("s","k","m","n"), stringsAsFactors = F)
y <- data.frame(name=c("a","a","a","a"), dep=c("v","k","i","m"), stringsAsFactors = F)
> x
name dep
1 a s
2 a k
3 a m
4 a n
> y
name dep
1 a v
2 a k
3 a i
4 a m
我想通过“name”列合并这两个数据框,以得到如下结果:
> z
name dep.x dep.y
1 a s <NA>
2 a n <NA>
3 a k k
4 a m m
5 a <NA> v
6 a <NA> i
我尝试使用all=TRUE
选项合并两个数据框,但我得到的是所有可能的组合,没有NA的行。
> merge(x,y, by="name", all=T)
name dep.x dep.y
1 a s v
2 a s k
3 a s i
4 a s m
5 a k v
6 a k k
7 a k i
8 a k m
9 a m v
10 a m k
11 a m i
12 a m m
13 a n v
14 a n k
15 a n i
16 a n m
如何获得我想要的结果?
P.S。我的问题有点类似 Merging two data frames in R that have common and uncommon samples
除了,a)我没有要合并的“ID”列,b)他得到但不想要的结果是我想要的结果。
答案 0 :(得分:2)
merge(cbind(x,dep.x=x$dep),cbind(y,dep.y=y$dep),all=T)[-2]
name dep.x dep.y
1 a <NA> i
2 a k k
3 a m m
4 a n <NA>
5 a s <NA>
6 a <NA> v