我在 R 中有两个数据框,其中一个很大(比如 160 个变量的 150000 个观察值)和一个较小的(5 个变量的 76 个观察值)。
大数据框中的变量之一是国家保存为字符串,而另一个变量由各个国家和特定特征组成。现在,我想通过为每个特征添加列并将观察结果与其相应国家/地区的特征联系起来,在我的新数据框中构建新变量。但是我有几个问题:
Country Var1 Var2 Var3 Var4 Var5
NIC -0.61252 -0.54723 -0.41597 -0.38825 -0.17819
RWA -0.60603 -0.28969 -0.57998 -0.05933 -0.14199
GEO -0.48543 -0.08132 0.56275 -0.25436 0.62782
虽然我的第一个数据框按以下方式格式化
CNTRY Var1 Var2 etc
似乎我需要自己硬编码一个函数?
如果我们称大的 df1 和小的 df2,你应该能够做一个满足你要求的连接。如果我正确理解您的问题,您需要一个包含多行(接近 150k)的数据框,每行都附加了国家/地区属性。但是您想删除没有相应国家/地区的 150k 行中的任何一行。
正如@aurelianoguedes 所建议的那样,您应该立即进行内部联接,这样可以消除大数据框中在小 df 中没有匹配项的任何行。
df.merged = dplyr::inner_join(df1, df2, by=c('Country' = 'CNTRY'))
带有过滤器 + left_join 的旧解决方案:
df.merged = df1 %>%
filter(Country %in% df2$CNTRY) %>%
left_join(df2, by=c('Country' = 'CNTRY'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句