gpt4 book ai didi

r - 将 data.frame 乘以具有匹配条件的列

转载 作者:行者123 更新时间:2023-12-01 08:32:11 25 4
gpt4 key购买 nike

我想将一个 df 中的几列乘以另一个 df 中的一列。

df1 和 df2 有一个名为“year_quarter”的列。我希望 df1 中的许多列乘以 df2 中的列,以便 year_quarter 匹配。

df1

year_quarter   col1    col2    col3
2010Q1 5 0.34 0.45
2010Q1 4 0.45 0.34
2010Q1 6 0.63 0.86
2010Q1 2 0.75 0.45
2010Q2 3 0.78 0.27
2010Q2 5 0.43 0.38
2010Q2 2 0.34 0.74
2010Q2 1 0.87 0.35
2010Q3 5 0.34 0.45
2010Q3 8 0.54 0.42
2010Q3 9 0.23 0.45
2010Q3 3 0.74 0.34
2010Q4 2 0.72 0.78
2010Q4 7 0.62 0.91
2010Q4 2 0.74 0.10
2010Q4 6 0.73 0.09

df2

year_quarter    ratio
2010Q1 0.96
2010Q2 1.34
2010Q3 1.92
2010Q4 0.74

我想将 df1 中的 col1、col2 和 col3 乘以 df2 中的比率,其中 year_quarter 在两个 dfs 中都匹配。即如果 df1 中的 Quarter_year = 2010Q1,那么对于 2010Q1 的所有实例,col1、col2 和 col3 应乘以 0.96,依此类推。

最佳答案

我们可以使用 match 来做到这一点。匹配两个数据帧中的相似列,然后获取相应的 ratio 值并将其乘以 df1,不包括第一列。

df2$ratio[match(df1$year_quarter, df2$year_quarter)] * df1[-1]


# col1 col2 col3
#1 4.80 0.3264 0.4320
#2 3.84 0.4320 0.3264
#3 5.76 0.6048 0.8256
#4 1.92 0.7200 0.4320
#5 4.02 1.0452 0.3618
#6 6.70 0.5762 0.5092
#7 2.68 0.4556 0.9916
#8 1.34 1.1658 0.4690
#9 9.60 0.6528 0.8640
#10 15.36 1.0368 0.8064
#11 17.28 0.4416 0.8640
#12 5.76 1.4208 0.6528
#13 1.48 0.5328 0.5772
#14 5.18 0.4588 0.6734
#15 1.48 0.5476 0.0740
#16 4.44 0.5402 0.0666

关于r - 将 data.frame 乘以具有匹配条件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com