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

将管道运算符序列转换为R函数或类似函数(理想情况下使用Tidyverse) 我正在尝试将管道运算符序列转换为R函数或类似函数(理想情况下使用Tidyverse)。,r,function,dictionary,R,Function,Dictionary,输入是一个整洁的数据框,以15个问题的回答作为变量,10个观察结果中的每一个都是4个标准回答中的一个(例如同意、不同意等) 输出应该是回答的摘要,包括每个问题/变量的回答/观察分布的计数和百分比 为了避免复制和粘贴以及改进代码,我想包装一个函数或类似的函数来计算循环中的计数和百分比,Purr map或类似的函数来迭代15个问题 谢谢你的建议 下面的代码按预期工作,并以问题表、计数和百分比以及Agree的值等进行响应。这最终是我试图大规模、优雅地实现的目标 DF %>% select(

输入是一个整洁的数据框,以15个问题的回答作为变量,10个观察结果中的每一个都是4个标准回答中的一个(例如同意、不同意等)

输出应该是回答的摘要,包括每个问题/变量的回答/观察分布的计数和百分比

为了避免复制和粘贴以及改进代码,我想包装一个函数或类似的函数来计算循环中的计数和百分比,Purr map或类似的函数来迭代15个问题

谢谢你的建议


下面的代码按预期工作,并以问题表、计数和百分比以及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)
而不那么有用

> DF_from_list<- data.frame(matrix(unlist(DF_as_list),
> nrow=length(DF_as_list), byrow=T))
最后,

DF_as_tibble <- as_tibble(DF_as_list) 


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

欢迎使用堆栈溢出!为了便于人们帮助您,请以与您相同的格式提供数据样本,最好在问题正文中包含
dput(您的_数据)
的输出。欢迎使用堆栈溢出!为了便于人们帮助您,请以与您相同的格式提供数据样本,最好在问题正文中包含
dput(您的_数据)
的输出。
*'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)