在R语言中从数据集生成绘制华夫图所需的命名向量
直接从数据集生成Waffle图所需的命名计数向量
嘿,我懂你想要简化这个步骤——不用手动逐个写sum(data$Colour == "XXX"),直接从原数据集生成符合waffle()要求的命名整数向量对吧?这里有几个简洁的R方案,帮你一步到位:
方法1:用基础R的table()函数(最简便)
基础R的table()函数天生就是干这个的:它会自动统计向量中各元素的出现频数,并且返回的结果自带元素名称作为向量名,完美匹配waffle()的参数要求。
# 直接统计颜色频数 colour_counts <- table(data$Colour) # 查看结果:Red Blue Green # 2 1 1 waffle(colour_counts)
这个方法完全不需要额外包,一行代码就能得到你要的命名向量,和你手动写的c(Red = 2, Blue = 1, Green = 1)效果一模一样。
方法2:用tidyverse工具(适合复杂场景)
如果你平时习惯用tidyverse生态,可以用dplyr::count()统计频数,再用tibble::deframe()把结果转换成命名向量——这个方法在需要过滤、分组或者强制保留某些零频数类别时更灵活:
library(tidyverse) # 统计频数并转为命名向量 colour_counts <- data %>% count(Colour) %>% deframe() # deframe将两列数据转为「列1是名称,列2是值」的向量 waffle(colour_counts)
如果你的环境里还没装tidyverse,先运行install.packages("tidyverse")就行。
两种方法都能直接从原数据集生成waffle()需要的输入,再也不用手动统计每个类别的数量啦!
内容的提问来源于stack exchange,提问作者adamjhodgson
相关产品推荐
相关产品推荐

