Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 变量在一行,计算在一列的矩阵_R - Fatal编程技术网

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))