R语言 取消列出数据集以分隔列

2w3rbyxf  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(115)

使用以下代码对该数据集进行统计学检验:

# DF1
Name <- c("Sam", "Anna", "Anna", "Sam", "Anna")
Companies <- c(23, 21, 22, 24, 45)
Store <- c(10, 8, 5, 5, 6)
Cars <- c(10, 7, 5, 6, 7)
Home <- c(8, 4, 5, 8, 4)
DF1 <- data.frame(Name, Companies, Store, Cars, Home)

DF1$Name <- as.factor(DF1$Name)

Z <- lapply(DF1[-1], function(x){
    wilcox.test(x ~ DF1$Name)
})

现在在Z中,每个列名都有一个列表中的列表。例如,当我查看数据框Z并单击Companies时,我看到statistic和null.value。我尝试取消它们的列表,以便根据它们所属的特定组将它们放在单独的列中(如下所示)。我使用的代码是这样的,但这不是我要找的,并且在网上找不到任何其他代码。

Z_unlisted <- as.data.frame(unlist(Z))

我不知道为什么我真的对此感到困惑,因为我觉得使用unlist()应该很简单,但是所有的列表都扩展到一列,而不是单独的列。
如何取消列出所有这些类别,使每个类别(统计、参数、p值等)都在列中,而分组(公司、商店、汽车和家庭)在一列中?示例如下所示:(其中每列都是列表的一部分)

Companies       2     0.8   Wilcoxon rank sum exact test                      two.sided  
Store           2.5   1     Wilcoxon rank sum test with continuity correction two.sided  
Cars            2     0.767 Wilcoxon rank sum test with continuity correction two.sided  
Home            0     0.128 Wilcoxon rank sum test with continuity correction two.sided
kx7yvsdv

kx7yvsdv1#

与其在整个列表中执行unlist,不如在和rbind中执行

do.call(rbind, lapply(Z, unlist))
pgky5nke

pgky5nke2#

使用扫帚中的tidy并使用purrr中的map_dfr应用它:

library(broom)
library(purrr)

map_dfr(DF1[-1], ~ tidy(wilcox.test(.x ~ Name, DF1)), .id = "Companies")

给予

# A tibble: 4 x 5
  Companies statistic p.value method                                 alternative
  <chr>         <dbl>   <dbl> <chr>                                  <chr>      
1 Companies       2     0.8   Wilcoxon rank sum exact test           two.sided  
2 Store           2.5   1     Wilcoxon rank sum test with continuit~ two.sided  
3 Cars            2     0.767 Wilcoxon rank sum test with continuit~ two.sided  
4 Home            0     0.128 Wilcoxon rank sum test with continuit~ two.sided

相关问题