R 变量在一行,计算在一列的矩阵
我需要分析一个数据框架 对于数据帧的每一列,我计算一些微积分,比如R 变量在一行,计算在一列的矩阵,r,R,我需要分析一个数据框架 对于数据帧的每一列,我计算一些微积分,比如mean、min或max 我希望将结果显示为如下矩阵: +--------+------+----+-----+-----+ | | mean | sd | min | max | +--------+------+----+-----+-----+ | age | 55 | 10 | 22 | 89 | +--------+------+----+-----+-----+ | height | 175
mean
、min
或max
我希望将结果显示为如下矩阵:
+--------+------+----+-----+-----+
| | mean | sd | min | max |
+--------+------+----+-----+-----+
| age | 55 | 10 | 22 | 89 |
+--------+------+----+-----+-----+
| height | 175 | 12 | 160 | 190 |
+--------+------+----+-----+-----+
| weight | 70 | 15 | 50 | 110 |
+--------+------+----+-----+-----+
我该怎么做?一个选项是
tidyverse
library(tidyverse)
d1 <- df1 %>%
select(age, height, weight) %>%
gather %>%
group_by(key) %>%
summarise(mean = mean(value), sd = sd(value), min = min(value), max = max(value))
m1 <- as.matrix(d1[-1])
rownames(m1) <- d1[[1]]
m1
# mean sd min max
#age 29.72114 1.1530639 25.53044 31.51712
#height 170.13357 0.9731242 168.43238 171.77091
#weight 59.69239 0.7826297 58.00708 61.05686
库(tidyverse)
d1%
选择(年龄、身高、体重)%>%
聚集%>%
分组依据(键)%>%
总结(平均值=平均值(值),标准差=标准差(值),最小值=最小值(值),最大值=最大值))
太好了,谢谢你!如果要选择所有列,该怎么办?如果我删除选择
行,则每个汇总值都将被删除NA@DanChaltiel在这个例子中,我使用了一个额外的列。因此,如果您想选择所有列,请删除select
,您可能会得到NA的原因是这些列可能有一些NA元素,因此,请使用mean(value,NA.rm=TRUE)
,sd(value,NA.rm=TRUE)
等。此外,在这里,我假设您拥有所有数字列。如果不是,那么它将混合非数字和数字可能会导致问题
set.seed(24)
df1 <- data.frame(col1 = rnorm(24), age = rnorm(24, 30), height = rnorm(24, 170),
weight = rnorm(24, 60))