gpt4 book ai didi

r - data.table merge() with NA in by column

转载 作者:行者123 更新时间:2023-12-04 00:03:30 27 4
gpt4 key购买 nike

我正在尝试加入两个表,其中加入的列具有一些 NA 值,这样当遇到 NA 时,记录会用 NA 填充,即

给定:

> 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 key 。任何帮助将不胜感激。

最佳答案

merge 的 dataframe 方法有一个 incomparables-参数, merge 的版本没有。

所以,使用数据框方法:

merge.data.frame(x, y, by = "V1", all = TRUE, incomparables = NA)

给出预期的结果:

  V1 V2.x V2.y
1 1 a <NA>
2 2 b B
3 3 c C
4 4 <NA> D
5 5 e E
6 NA d <NA>
7 NA <NA> A

注意:According to this GitHub-issue , 开发人员计划将来在 merge.data.table 中包含一个 incomparables-argument。

关于r - data.table merge() with NA in by column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54255804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com