You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:如何用指定公式替换多列中的0值

解决方法

你的需求是替换B、C列中的0值为「对应列总和 × 该行PercentageInA值」,原代码的问题在于变量名拼写错误(PercentageInVictoria应为PercentageInA),且未正确匹配行维度的PercentageInA值计算。

正确代码

# 原始数据集
df <- data.frame(ID = c("01", "02", "03", "04"),
                 B = c(0, 53, 100, 58),
                 C = c(0, 0, 0, 14),
                 PercentageInA = c(0.001, 0, 0.127, 0.005))

# 指定需要处理的列
col_need_to_calculate <- c("B", "C")

# 执行替换操作
df_result <- df %>%
  mutate(across(all_of(col_need_to_calculate),
                ~ ifelse(. == 0, sum(.) * PercentageInA, .)))

# 查看结果
df_result

结果验证

运行后得到的结果与预期完全一致:

  • B列:第一行0替换为sum(B)*0.001 = 211*0.001 = 0.211,其余非0值保留
  • C列:第一行0替换为sum(C)*0.001 =14*0.001=0.014,第二行0因PercentageInA=0仍为0,第三行0替换为14*0.127=1.778,第四行14保留

关键逻辑说明

  • all_of(col_need_to_calculate):确保向量形式的列名能被across正确识别
  • sum(.):across中.代表当前处理的列,sum(.)计算该列的原始总和(包含0值)
  • ifelse(. ==0, sum(.)*PercentageInA, .):逐值判断,0值按公式替换,非0值保持原样

内容的提问来源于stack exchange,提问作者AnnaHo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:02:22