R语言生成多选项调研数据频次表的技术求助
拆分多选字符串字段统计频次(R语言)
问题背景
调研数据里的county字段是多选合并的字符串(比如"A, B"代表同时选了A和B两个县),需要统计每个县的被选频次,但标准的table()方法会把合并后的整串当作独立值,没法实现需求。
示例输入数据
df <- data.frame(org = c("org_1", "org_2", "org 3", "org 4"), county = c("A, B", "A, D", "B, C", "B"))
期望输出
output <- data.frame(county = c("A", "B", "C", "D"), frequency = c(2, 3, 1, 1))
解决方案
方法1:用tidyverse工具链(推荐)
通过separate_rows()把多选字段拆成单独行,再用count()统计频次:
library(tidyverse) output <- df %>% separate_rows(county, sep = ", ") %>% # 按", "拆分每个单元格的字符串,生成对应多行 count(county, name = "frequency") # 统计每个县的出现次数,自定义列名为frequency output
方法2:基础R实现
不用额外安装包,靠字符串拆分和基础统计函数完成:
# 拆分每个单元格的字符串,转成一维向量 county_vec <- unlist(strsplit(df$county, ", ")) # 统计频次并转换成目标数据框格式 freq_table <- table(county_vec) output <- data.frame( county = names(freq_table), frequency = as.numeric(freq_table) ) output
内容的提问来源于stack exchange,提问作者KLenny
相关产品推荐
相关产品推荐

