如何基于另一列的百分比计算DataFrame新列的值?
正确计算方法说明
错误原因分析
你之前的代码存在三个问题:
- 计算逻辑错误:求某数的N%应该是数值 × N ÷ 100,而非数值除以N
- 数据框引用错误:你用了
bar_df,但目标数据框是df - 特殊列名处理:
Agriculture_GDP%包含%符号,直接用$引用会报错,需要用反引号包裹
修正后的代码
基础R写法
# 修正逻辑、数据框引用,并用反引号处理带特殊字符的列名 df$gdp_per_capita_agg_percen <- df$gdp_per_capita * df$`Agriculture_GDP%` / 100
tidyverse/dplyr写法(代码更清晰)
library(dplyr) df <- df %>% mutate(gdp_per_capita_agg_percen = gdp_per_capita * `Agriculture_GDP%` / 100)
结果验证
以阿尔巴尼亚为例:3281 × 20.6 ÷ 100 = 675.886,和你预期的675.8(四舍五入后)一致。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

