在嵌套和使用来自 tidyverse 的地图之后,心理包中的所有描述性结果如何取消嵌套?

Posted

技术标签:

【中文标题】在嵌套和使用来自 tidyverse 的地图之后,心理包中的所有描述性结果如何取消嵌套?【英文标题】:After nesting and using map from tidyverse, how unnest all descriptive results from psych package? 【发布时间】:2022-01-12 00:18:16 【问题描述】:

我有一个包含quest 和几个topics 的数据集。应用“描述”功能(来自 psych 包)后,如何以方便的方式列出所有结果?

我得到的结果:

所需的输出是这样的:

ds <- data.frame(quest = c(2,4,6,8), math_sum = rnorm(100,10,1), science_sum = rnorm(100,8,1))

    ds %>% 
        select(quest, ends_with("sum")) %>% 
        pivot_longer(-quest) %>% 
        nest_by(quest, name) %>% 
        mutate(x=list(map(data, ~psych::describe(.)))) %>% 
        unnest(-data)

【问题讨论】:

【参考方案1】:

你可以使用unnest_wider():

library(tidyverse)

ds %>% 
  select(quest, ends_with("sum")) %>% 
  pivot_longer(-quest) %>% 
  nest_by(quest, name) %>% 
  mutate(x=list(map(data, ~psych::describe(.)))) %>% 
  unnest_wider(x) %>% 
  unnest_wider(value)

返回

# A tibble: 8 x 16
  quest name          data  vars     n  mean    sd median trimmed   mad   min   max
  <dbl> <chr>   <list<tib> <dbl> <dbl> <dbl> <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>
1     2 math_s~   [25 x 1]     1    25 10.3  1.22   10.1    10.3  0.963  7.96 12.9 
2     2 scienc~   [25 x 1]     1    25  7.55 1.00    7.48    7.56 1.19   5.49  9.22
3     4 math_s~   [25 x 1]     1    25  9.59 0.998   9.50    9.58 0.858  7.31 11.6 
4     4 scienc~   [25 x 1]     1    25  8.07 1.28    8.24    8.01 1.70   6.13 10.6 
5     6 math_s~   [25 x 1]     1    25  9.85 0.932   9.79    9.79 0.929  8.50 11.8 
6     6 scienc~   [25 x 1]     1    25  7.80 0.907   7.81    7.79 0.959  6.03  9.69
7     8 math_s~   [25 x 1]     1    25 10.2  1.19   10.4    10.2  1.06   8.09 13.1 
8     8 scienc~   [25 x 1]     1    25  8.01 0.923   7.88    7.99 0.908  6.23  9.87
# ... with 4 more variables: range <dbl>, skew <dbl>, kurtosis <dbl>, se <dbl>

【讨论】:

谢谢!!效果很好!

以上是关于在嵌套和使用来自 tidyverse 的地图之后,心理包中的所有描述性结果如何取消嵌套?的主要内容,如果未能解决你的问题,请参考以下文章

更新R和tidyverse后出现错误

在 R 中的函数中创建和使用新变量:tidyverse 中的 NSE 编程错误

无法制作嵌套组件

如何在主代理的地图上放置嵌套代理

嵌套地图的Clojure Zipper压制TRIE

使用 Java 将嵌套地图保存并加载到文本文件中