R 基于另一个数据帧的值向数据帧添加列

R 基于另一个数据帧的值向数据帧添加列,r,dataframe,nested-loops,R,Dataframe,Nested Loops,我有一个2013年夏天的温度数据框。在此基础上,我想用纬度和经度绘制地理上的温度图。 我有一个带有温度和邮政编码的数据集,我想在我的原始数据框中添加一个具有适当纬度和长度的列 我编写了一个嵌套循环,它可以工作,但效率非常低: for (i in 1:length(Summer2013$zipcode)) { for (j in 1:length(zipcode$zip)) { col[i] <- if (Summer2013$zipcode[i] == zipcode$zip[

我有一个2013年夏天的温度数据框。在此基础上,我想用纬度和经度绘制地理上的温度图。 我有一个带有温度和邮政编码的数据集,我想在我的原始数据框中添加一个具有适当纬度和长度的列

我编写了一个嵌套循环,它可以工作,但效率非常低:

for (i in 1:length(Summer2013$zipcode)) {
  for (j in 1:length(zipcode$zip)) {
    col[i] <- if (Summer2013$zipcode[i] == zipcode$zip[j]) {
      zipcode$longitude[j] 
    } else {0}
  }
}
for(1中的i:长度(2013年夏季$zipcode)){
用于(j in 1:length(zipcode$zip)){

col[i]要合并数据集:

merge(Summer2013, zipcode, by.x="zipcode", by.y="zip", all.x=TRUE)

这是一个左连接,对于在
zipcode
数据框中找不到的zipcodes,它将返回NA。

您可能需要
ifelse
,但您在此处显示的代码将重复覆盖
col
中的值,因此不清楚您实际要做什么。我确实意识到有问题,但没有else子句,代码以前失败过。我正在尝试将两列添加到我的数据框中-一列基于zipcode的long,另一列基于zipcode的lat。这相当于excel中的vlookup。我猜您可以通过类似于
zipcode[c(“纬度”、“经度”)][匹配(Summer2013$zipcode,zipcode$zip),]
查看此问题并回答: