如何使用R基于给定字符数据集生成指定格式的频率统计表
首先先修正你原始的向量定义代码(R中组合多个元素需要用c()函数包裹),然后可以用两种方法实现需求:
方法1:用stack+table快速生成结果(基础包实现,无需额外安装依赖)
# 构造原始向量并统一转为小写,匹配输出的大小写要求 a <- c("ham", "pizza", "ham", "ham", "apple", "Orange") b <- c("ham", "guava", "bread") a <- tolower(a) b <- tolower(b) # 合并向量后直接统计频次 df <- stack(list(a = a, b = b)) result <- table(df$ind, df$values) # 调整列顺序完全匹配你需要的格式 result <- result[, c("ham", "guava", "bread", "pizza", "apple", "orange")]
输出result即可得到目标表格:
ham guava bread pizza apple orange a 3 0 0 1 1 1 b 1 1 1 0 0 0
方法2:手动指定因子水平合并
原理是给两个向量指定相同的所有统计维度,table统计时未出现的元素会自动补0,再按行合并即可:
a <- c("ham", "pizza", "ham", "ham", "apple", "Orange") b <- c("ham", "guava", "bread") a <- tolower(a) b <- tolower(b) # 手动指定所有要统计的元素及顺序 all_items <- c("ham", "guava", "bread", "pizza", "apple", "orange") # 分别统计两个向量的频次 count_a <- table(factor(a, levels = all_items)) count_b <- table(factor(b, levels = all_items)) # 按行合并为最终表格 result <- rbind(a = count_a, b = count_b)
内容的提问来源于stack exchange,提问作者Sultan Tanim
相关产品推荐
相关产品推荐

