r - 如何从另一个表中查找值以填充现有表列?
问题描述
我有一个名为的数据框Deals
,其中一个变量是$DealYear
. 这包含3 个因素(2013 年、2014 年、2015 年)。我在 Deals 中有另一列称为$GDPDeflator
当前未填充。例如:
#Deals table
DealID DealAmt DealYear Name GDPDeflator Website
100101 200 2013 ABC 0 www.abc.com
120022 3000 2014 EFG 0 www.efg.com
300012 650 2013 HIJ 0 www.hij.com
我有一个名为 Deflator 的小表,其中包含我需要的值Deals$GDPDeflator
:
#Deflator table
Year Defl
2012 1.10
2013 1.08
2014 1.055
2015 1.046
2016 1.03
如何根据and查找Deals$GDPDeflator
from的值?Deflator$Defl
Deals$DealYear
Deflator$Year
解决方案
merge
这是注释中建议的函数的典型用法。
由于您没有提供最小的可重现示例,因此我必须准备一个玩具示例。
deals.df <- data.frame(DealID = abs(rnorm(3)),
DealYear = c(2013,2014,2015),
DealAmt = abs(rnorm(3)))
deflator.df <- data.frame(Year=c(2012:2016),
Defl=c(1.1,1.08,1.055,1.046,1.03))
此时,您可以重命名DealYear
为Year
in deals.df
(反之亦然),或者如下所示,使用by.x
andby.y
来告诉merge
每个数据框中列的名称
NEW.deals.df <- merge(deals.df, deflator.df, by.x = "DealYear", by.y = "Year")
NEW.deals.df
输出
DealYear DealID DealAmt Defl
1 2013 2.4428505 0.8423267 1.080
2 2014 0.7864217 1.7308812 1.055
3 2015 1.2319621 0.7857849 1.046
现在,您可以根据需要重新排列列。
请注意,您可以使用by=c("colname1","colname2",...)
.
推荐阅读
- apache-kafka - 如何在命令行中使用具有人类可读时间戳的 Kafka 消息?
- kubernetes - Helm 删除所有早于某个日期的版本,在某个日期之前更新或应用程序版本低于
- python - 向装饰器添加参数会删除 cls 参数
- mesh - ANSYS 网格划分问题 - 如何对复杂几何图形(约 80,000 个面)进行网格划分?
- php - Symfony 3.4 PHP 单元无法猜测内核目录
- wordpress - WPML 根据 wordpress 配置文件设置重定向用户
- html - 找出是什么在改变网站上的样式属性
- javascript - 如何强制服务器在一个 http 请求中发送所有导入的 ES6 模块
- matlab - 如何解决matlab拟合?
- computer-vision - 视差值的单位有哪些?