如何在R语言dataframe的F列数值旁添加占比百分比
直接修改DataFrame的F列,添加数值占总和的百分比
需求说明
我有一个大型DataFrame,希望直接在F列的每日数值旁添加该数值占F列总和的百分比,无需生成Perc_F、both这类辅助列,直接修改F列完成操作。
原始数据
library(tidyverse) # 数据结构 a <- structure(list(SampleDate = structure(c(15710, 15711, 15712, 15713, 15714, 15715, 15716, 15717), class = "Date"), year = c("2013", "2013", "2013", "2013", "2013", "2013", "2013", "2013"), F = c(0, 1, 5, 2, 0, 1, 0, 7), W = c(2, 0, 1, 0, 6, 0, 1, 4), S = c(4, 0, 2, 0, 1, 7, 0, 11), LF = c(1, 0, 5, 1, 4, 0, 2, 1)), row.names = c(NA, 8L), class = "data.frame") a$SampleDate <- as.Date(a$SampleDate)
解决方案代码
直接在mutate中完成百分比计算与字符串拼接,一步替换F列:
a <- a %>% mutate(F = paste0(F, "(", scales::percent(F/sum(F)), ")"))
最终结果
执行代码后,F列将直接显示数值加占总和百分比的格式:
SampleDate year F W S LF 1 2013-01-05 2013 0(0.0%) 2 4 1 2 2013-01-06 2013 1(6.2%) 0 0 0 3 2013-01-07 2013 5(31.2%) 1 2 5 4 2013-01-08 2013 2(12.5%) 0 0 1 5 2013-01-09 2013 0(0.0%) 6 1 4 6 2013-01-10 2013 1(6.2%) 0 7 0 7 2013-01-11 2013 0(0.0%) 1 0 2 8 2013-01-12 2013 7(43.8%) 4 11 1
说明
F/sum(F)计算每个数值占F列总和的比例scales::percent()将比例转换为带百分号的字符串格式paste0()把原始数值和百分比拼接成数值(百分比%)的格式,直接赋值给F列完成替换
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

