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

如何批量统计大数据集中不同时间区间症状列的频次?

批量统计多列症状频次的高效方法

不需要用手动循环,用以下几种方法可以高效批量处理所有症状列的频次统计:

方法1:宽表转长表(推荐,整合时间区间信息)

通过pivot_longer将所有症状列转换为长格式,一次性按时间区间+症状统计频次,同时保留各列对应的时间区间信息:

library(tidyverse)

dataset %>%
  # 选中所有以Symptome开头的列,转换为长表
  pivot_longer(cols = starts_with("Symptome"),
               names_to = "Time_Interval",
               values_to = "Symptom") %>%
  # 从列名中提取时间区间数字(比如Symptome1转为1)
  mutate(Time_Interval = str_extract(Time_Interval, "\\d+")) %>%
  # 按时间区间和症状统计频次,按频次排序
  count(Time_Interval, Symptom, sort = TRUE)

输出结果会清晰展示每个时间区间下各症状的出现次数,方便后续分析或可视化。

方法2:批量处理单列统计(保留独立结果)

如果需要保留每列单独的统计结果,可以用purrr::map批量遍历症状列:

library(purrr)
library(dplyr)

# 筛选出所有症状列
symptom_cols <- select(dataset, starts_with("Symptome"))

# 对每列执行count操作,结果存入列表
freq_results <- map(symptom_cols, ~ count(.x, value = !!sym(colnames(.x))))

# 查看单列结果,例如Symptome1的频次
freq_results$Symptome1

返回的列表中每个元素对应一列的频次统计数据,按需调用即可。

方法3:Base R实现(无需tidyverse)

如果不使用tidyverse包,用Base R的lapply也能实现批量统计:

# 匹配所有以Symptome开头的列名
symptom_col_names <- grep("^Symptome", colnames(dataset), value = TRUE)

# 批量生成每列的频次表
freq_list <- lapply(dataset[symptom_col_names], function(col) {
  as.data.frame(table(col, useNA = "ifany"))
})

# 可选:将所有结果合并为一个数据框
combined_freq <- do.call(rbind, freq_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:40:01