将数据帧拆分为 5 个部分,并对每个部分使用描述函数

Cey*_*yda 2 r lapply dplyr purrr

我有一个这样的数据框:

df <- data.frame(x = 1:100, y = runif(100))
Run Code Online (Sandbox Code Playgroud)

我把它分成5部分:

z <- split(df, rep(1:5, length.out = nrow(df), each = ceiling(nrow(df)/5)))
Run Code Online (Sandbox Code Playgroud)

现在我试图找到每个部分的描述性统计数据,z但我收到了这个错误:(我实际上对df$y在这 5 个部分中找到列的描述性统计数据很感兴趣。)

psych::describe(z,na.rm = TRUE)

Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) : 
  is.atomic(x) is not TRUE
Ek olarak: Warning message:
In mean.default(x, na.rm = na.rm) :
  argument is not numeric or logical: returning NA
Run Code Online (Sandbox Code Playgroud)

我正在尝试找到这样的东西:(可能看起来不像z[1]$y,但假设这就是我想要找到的东西)

           vars     n   mean     sd median trimmed    mad   min    max  range skew kurtosis   se
z[1]$y       5 44813   0.02   0.17   0.00    0.01   0.10 -0.97   8.87   9.84 6.19   211.87 0.00
....
z[5]$y       6 45220   0.15   0.07   0.14    0.15   0.05  0.05   0.81   0.76 3.83    31.53 0.00
Run Code Online (Sandbox Code Playgroud)

另外,如何仅对或 中的y值使用描述函数?z[1]z[5]

我不确定如何处理此处的列表,因此感谢并感谢您的回复。

Tar*_*Jae 5

我们可以用 lapply

library(psych)

n <- 20
nr <- nrow(df)
z <- split(df, rep(1:ceiling(nr/n), each=n, length.out=nr))

lapply(z, psych::describe)
Run Code Online (Sandbox Code Playgroud)

输出:

$`1`
  vars  n  mean   sd median trimmed  mad min   max range skew kurtosis   se
x    1 20 10.50 5.92   10.5   10.50 7.41   1 20.00 19.00 0.00    -1.38 1.32
y    2 20  0.37 0.30    0.3    0.34 0.32   0  0.96  0.96 0.47    -1.13 0.07

$`2`
  vars  n  mean   sd median trimmed  mad   min   max range skew kurtosis   se
x    1 20 30.50 5.92  30.50   30.50 7.41 21.00 40.00 19.00 0.00    -1.38 1.32
y    2 20  0.43 0.29   0.39    0.42 0.34  0.01  0.96  0.95 0.41    -1.14 0.06

$`3`
  vars  n  mean   sd median trimmed  mad   min   max range  skew kurtosis   se
x    1 20 50.50 5.92  50.50   50.50 7.41 41.00 60.00 19.00  0.00    -1.38 1.32
y    2 20  0.55 0.34   0.51    0.56 0.49  0.03  0.98  0.95 -0.08    -1.62 0.08

$`4`
  vars  n  mean   sd median trimmed  mad   min   max range skew kurtosis   se
x    1 20 70.50 5.92  70.50   70.50 7.41 61.00 80.00 19.00 0.00    -1.38 1.32
y    2 20  0.52 0.27   0.46    0.52 0.39  0.15  0.94  0.79 0.12    -1.59 0.06

$`5`
  vars  n  mean   sd median trimmed  mad   min    max range  skew kurtosis   se
x    1 20 90.50 5.92  90.50   90.50 7.41 81.00 100.00 19.00  0.00    -1.38 1.32
y    2 20  0.62 0.33   0.65    0.65 0.43  0.01   0.99  0.98 -0.33    -1.48 0.07
Run Code Online (Sandbox Code Playgroud)