当前位置: 首页 > 知识库问答 >
问题:

R中两个不同数据帧的列匹配

白刚洁
2023-03-14

我有两个具有经度和纬度值的数据帧,我想从数据帧#2中提取值(例如数据帧#2的第三列DF2$C),这些值与数据帧1的列匹配...例如,数据帧1有两列(lonlat),数据帧2有三列(lonlat和一些值“c”)...我想在数据帧1中添加第三列,其中DF2$C的值对应于两个数据帧中两列完全匹配的值,类似于DF1$lon==DF2$lonDF1$lat==DF2$lat...在latlon不匹配的对中,我希望添加na,以便第三列(我要添加到数据。帧1)的长度为=nrow(df1)。我尝试了merge函数,但在将DF1的两列与DF2的列进行匹配时遇到了困难。

共有1个答案

糜帅
2023-03-14

您可以尝试data.table

library(data.table)
setDT(df1)
setkey(setDT(df2), lat, lon)
df2[df1]
#   lat lon          C
#1:  58   1         NA
#2:  52  10         NA
#3:  54   7 -0.9094088
#4:  60   2         NA
#5:  50   3  1.4541841
#6:  56   9 -1.7771135
#7:  59   5         NA
#8:  55   8         NA
#9:  53   4         NA
#10: 57   6         NA
df1 <- structure(list(lat = c(58L, 52L, 54L, 60L, 50L, 56L, 59L, 55L, 
53L, 57L), lon = c(1L, 10L, 7L, 2L, 3L, 9L, 5L, 8L, 4L, 6L)), .Names = c("lat", 
"lon"), row.names = c(NA, -10L), class = "data.frame")

df2 <- structure(list(lat = c(51L, 55L, 50L, 58L, 56L, 57L, 60L, 54L, 
 52L, 54L), lon = c(13L, 10L, 3L, 6L, 9L, 8L, 9L, 16L, 4L, 7L), 
 C = c(1.48642005012902, 1.53314455225747, 1.45418413640182, 
-0.874122129771392, -1.77711353745745, 0.128866710402714, 
-2.41118134931725, -1.78305563078752, -0.0173287724390305, 
-0.909408846416724)), .Names = c("lat", "lon", "C"), row.names = c(NA, 
-10L), class = "data.frame")
 类似资料:
  • 我有两个不同长度的数据帧。我想用CAP*货币和Go*货币与df_cur的乘法来改变数据帧df中的列。这应该在国家和年份必须分别对两个数据家族相同的条件下完成。更具体地说, #df# #df_cur# 所以,我想像这样变换df: #df# 我回顾了许多将两个数据帧大小不同的列相乘得到的答案,但没有任何结果。 我的代码示例: 非常感谢您的宝贵时间!

  • 基本上,它应该在步骤中找到指标为43且步骤=1的行,然后将该值放在新列中,在这种情况下,它将是“Gross value Added”。任何帮助都将非常感谢!

  • 这个问题和这个问题类似:R:两个/多个具有相同变量(列名)的数据帧的Sum列式值,并且以Date列作为引用,但是我的DF有不同的列数、列名,并且没有一个特定的引用列。 我试过合并、加入、通过...等

  • 我有两个不同的DataFrames,我想合并与和列。我看到有一些线程,但我找不到我的问题的解决方案。我也读了这份文件,并尝试了不同的组合,但是,不工作得很好。 我的两个不同数据帧的示例, 正如您在两个数据帧中看到的,以开始,我想加入,这基本上是匹配的日期和时间。到目前为止,我使用前面的线程和上面提到的文档尝试了许多不同的组合。例如,, 这是右DataFrame的值。我知道,我不必同时使用和列,但是

  • 我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且

  • df1有每月时间索引,df2有季度时间索引。df1和df2有不同的行数和列数,我想:(1)并排连接它们并保持它们的索引。(2)输出到excel文件。 我尝试过pd.concat,但是这种方法连接基于我不想要的数据帧索引之一的数据帧 excel中的预期结果: