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

如何统计R语言中字符型多值treatment列的各处理数量与占比?

解决方法

可以用tidyverse工具链中的separate_rows()函数先拆分多值行,再进行统计,具体步骤如下:

  1. 加载所需包
library(tidyverse)
  1. 拆分多值行并统计
treatment <- c("1", "1", "2", "5", "1,2", "2,5", "1,2,5", "3") 
df <- data.frame(treatment)

result <- df %>%
  # 按逗号拆分treatment列,将多值行展开为单行单值
  separate_rows(treatment, sep = ",") %>%
  # 按处理分组
  group_by(treatment) %>%
  # 统计每个处理的数量
  summarise(number = n()) %>%
  # 计算百分比,替换小数点为逗号,保留一位小数
  mutate(percent = str_replace(round(100 * number / nrow(df), 1), "\\.", ","))

# 输出结果
print(result, row.names = FALSE)

运行后输出结果:

treatment number percent
        1      4      50
        2      4      50
        3      1    12,5
        5      3    37,5

关键步骤说明

  • separate_rows():将包含多个值的字符列按指定分隔符(这里是逗号)拆分,把原来的一行拆成多行,每个值单独占一行,这是解决多值行统计问题的核心。
  • 后续的group_by()和summarise()就可以正常统计每个处理的出现次数,最后通过mutate()计算百分比并调整格式,匹配你需要的逗号作为小数点分隔符的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:15:01