我正在尝试连接两个表,其中连接的列具有一些 NA 值,这样当遇到 NA 时,记录就会用 NA 填充,即
Given:
> x = data.table(c(1,2,3,NA,5), c("a","b","c","d","e"))
> x
V1 V2
1: 1 a
2: 2 b
3: 3 c
4: NA d
5: 5 e
> y = data.table(c(NA,2,3,4,5), c("A","B","C","D","E"))
> y
V1 V2
1: NA A
2: 2 B
3: 3 C
4: 4 D
5: 5 E
我希望我的输出是:
> z = data.table(c(NA,NA,1,2,3,4,5),c("d",NA,"a","b","c",NA,"e"),c(NA,"A",NA,"B","C","D","E"))
> z
V1 V2 V3
1: NA d NA
2: NA NA A
3: 1 a NA
4: 2 b B
5: 3 c C
6: 4 NA D
7: 5 e E
我想merge()
可以用来做到这一点。但我无法让它产生我期望的输出:
> merge(x,y, by=c("V1"), all=TRUE)
V1 V2.x V2.y
1: NA d A
2: 1 a NA
3: 2 b B
4: 3 c C
5: 4 NA D
6: 5 e E
我真的不喜欢它根据 NA 值进行合并,就好像它是匹配一样,当我在具有多个 NA 的较大表中执行此操作时,它似乎会迭代给定的 V1 和 V2 的列值的所有可能组合NA 键。任何帮助,将不胜感激。