我的数据看起来像这个简化(缩短)的样本数据:
old <- data.frame(nr=c(4551, 4001, 301, 4271, 321, 4221, 261), name=c("Aadorf", "Aarau", "Aarberg", "Aarburg", "Aarwangen", "Abtwil", "Zollikon"), nr=c(26.3, 38.4, 30.8, 34.7, 31.0, 20.5, 31.5))
new <- data.frame(nr=c(4560, 4001, 301, 4271, 321, 4221), nr=c(46.65, 56.64, 57.62, 55.33, 61.62, 35.77))
现在我想用它的数字合并两个data.frames
:
both <- merge(old, new, all.x=T, by="nr")
这很有效,但是当我看一下输出时,我松了一些old
的名字:
> both
nr name nr.1.x nr.1.y
[1] 301 Aarberg 30.8 57.62
[2] 321 Aarwangen 31.0 61.62
[3] 4001 Aarau 38.4 56.64
[4] 4221 Abtwil 20.5 35.77
[5] 4271 Aarburg 34.7 55.33
[6] 4551 Aadorf 26.3 NA
[7] 261 NA 31.5 NA
我不明白为什么它引入NA
而不是第七行中的名称。如果我运行我的例子,我没有那个问题(我想这是因为数字太小),但它应该说明我正在努力的事情。当我查看我的数据时,R引入NA
和不引用的地方似乎很随机。
有什么建议吗?谢谢!
答案 0 :(得分:1)
为什么不省略='nr':
> merge(new, old, all=T)
nr nr.1 name
1 261 31.50 Zollikon
2 301 30.80 Aarberg
3 301 57.62 <NA>
4 321 31.00 Aarwangen
5 321 61.62 <NA>
6 4001 38.40 Aarau
7 4001 56.64 <NA>
8 4221 20.50 Abtwil
9 4221 35.77 <NA>
10 4271 34.70 Aarburg
11 4271 55.33 <NA>
12 4551 26.30 Aadorf
13 4560 46.65 <NA>