【发布时间】:2020-01-15 22:58:18
【问题描述】:
我正在尝试将 data.frame 转换为矩阵。我计算了 iris 数据集的一些统计数据,并希望将每个统计数据放在单独的行中。下面的代码在一行中显示了所有统计数据(平均值和中位数),这不是所需的输出。我想要这样的东西:
stat Sepal.Lenght Sepal.Width ....
avg 10.5 .....
med ...... .....
代码如下:
data_iris <- iris
avg <- data_iris %>%
summarise_at(vars(Sepal.Length:Petal.Width),mean,na.rm=TRUE)
med <- data_iris %>%
summarise_at(vars(Sepal.Length:Petal.Width),median,na.rm=TRUE)
column <- colnames(data_iris[1:4])
rown <- c("avg","median")
df <- data.frame(avg=avg,med=med)
m <- data.matrix(df)
还有一个问题:我想计算分位数,但出现错误:
qrtl <- data_iris %>%
summarise_at(vars(Sepal.Length:Petal.Width),quantile,na.rm=TRUE)
错误:列 Sepal.Length 的长度必须为 1(汇总值),而不是 5
怎么了?
【问题讨论】:
-
为了好玩,Base R 替代品,它提供了
matrix输出 -sapply(data_iris[1:4], function(x) c(mean=mean(x),median=median(x)))
标签: r