将管道运算符序列转换为R函数或类似函数(理想情况下使用Tidyverse)

时间:2019-06-04 17:38:49

标签: r function dictionary

我正在尝试将管道运算符序列转换为R函数或类似函数(理想情况下使用Tidyverse)。

输入是一个整洁的数据框,其中包含对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)

生成有用的摘要统计信息(最小,中位数,均值,最大值,第一和第三位数),但不提供响应的百分比分布。

0 个答案:

没有答案