输入是一个整洁的数据框,其中包含对15个问题的回答作为变量,而10个观察值中的每一个都是4个标准回答之一(例如,同意,不同意等)
输出应为答复的摘要,其中包含每个问题/变量的答复/观察值的计数和百分比。
为了避免复制和粘贴并改善代码,我想在循环,Purr映射或类似方法中包装一个函数或类似函数以计算计数和百分比,以对15个问题进行迭代。
谢谢您的建议。
下面的代码按预期方式工作,并使用Question,Count和Percentage表以及Agree等值进行响应。这最终是我要尝试实现的规模化和优雅化。
DF %>%
select(question) %>%
group_by(question) %>%
summarise(Count = n()) %>%
mutate (Percentage = round(100 * Count / sum(Count),0))
背景
我从一个整洁的数据帧开始:
*'data.frame': 10 obs. of 15 variables:
$ Question1 : Factor w/ 4 levels "Agree","Neither agree nor disagree",..: 1 1 1 1 1 1 1 1 1 1 ...*
以下内容使我与众不同,没有百分比:
DF_as_list <- DF %>%
map(summary)
通过创建
*List of 15
$ Question1 : Named int [1:4] 10 0 0 0
..- attr(*, "names")= chr [1:4] "Agree" "Neither agree nor disagree" "Disagree" "Don't know"*
不那么有用
> DF_from_list<- data.frame(matrix(unlist(DF_as_list),
> nrow=length(DF_as_list), byrow=T))
创建:
*'data.frame': 15 obs. of 4 variables:
$ X1: int 10 10 ...
$ X2: int 0 0 ...
$ X3: int 0 0 ...
$ X4: int 0 0 ...*
最后,
DF_as_tibble <- as_tibble(DF_as_list)
产生有用的摘要提示
*Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 4 obs. of 15 variables:
$ Question1 : int 10 0 0 0
$ Question2 : int 10 0 0 0*
和
DF_as_tibble %>%
map(summary)
生成有用的摘要统计信息(最小,中位数,均值,最大值,第一和第三位数),但不提供响应的百分比分布。