【发布时间】:2021-11-02 00:50:16
【问题描述】:
示例数据:
| sun | sun | sun | sky | sky | |
|---|---|---|---|---|---|
| 1 | 1.0 | 2.0 | 1.1 | 4.0 | 9.8 |
| 2 | 3.7 | 1.0 | 1.0 | 3.3 | NA |
| 3 | 1.5 | 0.4 | 2.1 | 3.3 | 6.0 |
| 4 | 3.7 | NA | 3.6 | 3.1 | 5.6 |
| 5 | 2.9 | 1.1 | 10.0 | 7.1 | 7.7 |
| 6 | 7.0 | 4.9 | 6.9 | 5.4 | 4.9 |
我想计算每个唯一列名的平均值和标准差(忽略 NA)以获得如下输出:
| mean | sd | |
|---|---|---|
| sun | 3.170588235 | 2.677630647 |
| sky | 5.472727273 | 2.102422845 |
可重现的数据:
df <- data.frame(c(1, 3.7, 1.5, 3.7, 2.9, 7),
c(2, 1, 0.4, NA, 1.1, 4.9),
c(1.1, 1, 2.1, 3.6, 10, 6.9),
c(4, 3.3, 3.3, 3.1, 7.1, 5.4),
c(9.8, NA, 6, 5.6, 7.7, 4.9))
names(df) <- c("sun", "sun", "sun", "sky", "sky")
我得到的最接近的是
#for mean
sapply(split.default(df, names(df)), rowMeans, na.rm = TRUE)
#for sd
sapply(split.default(df, names(df)), function(x) apply(x, 1, sd, na.rm=TRUE))
我从这个post 得到的,但我不知道如何调整它以获得我想要的。我知道我可以取 rowmeans 的平均值来获得每个组的平均值,但这不适用于标准差。
【问题讨论】:
标签: r dataframe mean standard-deviation