【发布时间】:2020-05-15 11:56:59
【问题描述】:
我有 2 个数据框,我正在尝试使用条件进行内部连接。我将展示一个示例来阐明我想要做什么:
A
cnumero cep numero bairro
1 124,35 124 35 K
2 375,NA 375 NA L
3 NA,28 NA 28 M
B
cnumero bairro XY
1 124,35 J 1
2 375,48 L 2
3 135,28 M 3
合并的第一个条件是,如果A$cep != NA和A$numero != NA,则使用cnumero列进行连接,否则使用bairro列进行连接,结果:
new_A
cnumero cep numero XY
1 124,35 124 35 1
2 375,NA 375 NA 2
3 NA,28 NA 28 3
到目前为止,我所做的是使用以下方法进行内部连接:
A[A$cnumero %in% unique(B$cnumero),],因为在我的真实数据框中,我在数据框B 中有重复值。
编辑:我的数据示例
A = data.frame(cnumero=c("124,35", "375,NA", "NA,28"),cep = c(124, 375, NA), numero = c(35, NA, 28), bairro = c("K", "L","M"))
B = data.frame(cnumero=c("124,35", "375,48", "135,28"), bairro = c("J", "L","M"), XY = c(1, 2, 3))
new_A = data.frame(cnumero=c("124,35", "375,NA", "NA,28"),cep = c(124, 375, NA), numero = c(35, NA, 28), XY = c(1, 2, 3))
【问题讨论】:
-
你确定A没问题吗?
A$cnumero中没有NA(请看is.na(A$cnumero)),所以我无法达到您的结果。你的意思是应该是字符串“NA”A$cnumero? -
A$numero和A$cep是数字,但A$cnumero是字符串。 -
确实是 NA,但是如果您使用
read.table导入数据,它就会变成“NA”。如果@Ga13 与dput共享数据会更容易。或者使用read.table时加na.strings = "NA" -
合并两次不是更方便吗?
-
抱歉,搞糊涂了,重点是
cnumero中不能有NA。相关列是另外两列,NA默认识别正确
标签: r join inner-join