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]
我不确定如何处理此处的列表,因此感谢并感谢您的回复。
我们可以用 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)