r - 将数据帧的新列分配给与其他数据帧匹配的值

标签 r

我有两个数据框:

geodata<-read.csv(text='postalcode;latitude;longitude
7000;47.8415;16.5041
7000;47.8921;16.4011
7000;47.9400;16.5032
7071;47.8012;16.671
2443;47.9156;16.5179', sep=';', header=TRUE)

addresses<-read.csv(text='postalcode;address
2400;Lorem ipsum
7000;Dolor sit amet
2443;Consetetur sadipscing elitr
7000;Sed diam nonumy', sep=';', header=TRUE)

我需要的是地址数据框中的两个附加列以及相应的(当存在多个邮政编码行时第一个匹配)geodata$latitudegeodata$longitude 值。

How to join (merge) data frames (inner, outer, left, right)?显示了几乎我正在寻找的内容,只是我不希望合并的数据框中出现重复的行。

我尝试过类似的方法

# code not working... #
addresses$latitude<-geodata[addresses$postalcode==geodata$postalcode]

我知道这真的很难看:-(

最佳答案

此处无需使用额外的软件包。只需合并:

merge(geodata,addresses,all.x=TRUE)

#   postalcode latitude longitude                     address
# 1       2443  47.9156   16.5179 Consetetur sadipscing elitr
# 2       7000  47.8415   16.5041              Dolor sit amet
# 3       7000  47.8415   16.5041             Sed diam nonumy
# 4       7071  47.8012   16.6710                        <NA>

编辑:

要添加地理数据到地址,我们应该颠倒此处的顺序:

merge(addresses,geodata,all.x=TRUE)
  postalcode                     address latitude longitude
1       2400                 Lorem ipsum       NA        NA
2       2443 Consetetur sadipscing elitr  47.9156   16.5179
3       7000              Dolor sit amet  47.8415   16.5041
4       7000             Sed diam nonumy  47.8415   16.5041

关于r - 将数据帧的新列分配给与其他数据帧匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245829/

相关文章:

r - 在 R 中使用识别功能

r - 将向量的所有组合粘贴到R中

用 NA 替换所有列的负值?

r - 从数据框列表中的每个数据框中调用特定列

r - R 堆积面积图中的绘图标签

r - 在 R 中将 2 个数据集组合在一个图中

r - 在 R data.table 中计算时间增量

r - 将空白更改为NA的功能

r - 使用 seq() 创建一个规则的日期时间序列 (POSIXct)

r - 如何将外部数据文件添加到开发 R 包中?