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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:15:10