在R中跨多列批量生成百分得分 无需重复编写代码
R批量处理多列生成百分制得分解决方案
你可以直接使用dplyr提供的across()函数实现批量列处理,无需重复编写相同逻辑,代码如下:
library(dplyr) df <- df %>% mutate( # 遍历第4至第40列执行计算 across(4:40, ~ (.x / 5) * 100, .names = "percent_{.col}") )
参数说明
4:40:指定需要处理的列范围,如果你所有待处理列都是score_开头的,也可以替换为starts_with("score_"),不受列排序变化影响,稳定性更强~ (.x / 5) * 100:你需要复用的计算逻辑,.x为遍历到的每一列的指代.names = "percent_{.col}":新生成列的命名规则,{.col}会自动替换为原始列名,和你示例中的命名规则完全匹配
处理效果
用你提供的样例数据运行后,输出结果如下:
score_1 score_2 percent_score_1 percent_score_2 1 2 3 40 60 2 3 4 60 80 3 5 1 100 20
如果使用的dplyr版本较低不支持across(),可以使用mutate_at实现相同效果:
df <- df %>% mutate_at(vars(4:40), list(percent = ~ (.x /5)*100))
内容的提问来源于stack exchange,提问作者jarciniegas
相关产品推荐
相关产品推荐

