最近遇到了一个问题,就是收到问卷之后,有好几道单选题,对于单选题我们通常需要计算频数和比例,那么使用R语言对单选题进行批量计算呢?
在tidyverse风格下,我们可以使用group_by+summarise函数实现单选题的频数和百分比的计算。但对于多个单选题的批量计算,我首先想到的是使用for循环,但是尝试下来感觉不好。后来发现在group_by参数里,使用get()函数,就能解决问题。
我们先建立在Excel里建立一个模拟数据,另存为data.csv,注意选择UTF-8的csv格式。将文件放到R的工作路径里。文件见下图:
代码如下:
library(tidyverse)
df <- read_csv("data.csv")
item <- c("性别","专业","年级")
for (i in c(item)){
print(i)
df %>%
group_by(get(i)) %>%
summarise(n=n(), prop=n/nrow(.)) %>%
print()
}
如果对tidyverse有所了解,这段代码是不难看懂的。其结果如下: