如何在R中为特定数据项的均值,SD和范围创建表?

时间:2018-08-24 11:05:41

标签: r

我试图通过创建五列(名称,特定名称的总数,均值,SD和范围)在R中为特定数据集创建一个表。

我已经有一个数据集(大小),其列为:名称,高度(H)和重量(W),并且我想使用带有列的大小数据创建一个表,列为:名称,特定项的总数名称,H的平均值,H的SD和H的范围,W的平均值,W的SD和W的范围。但是,我很难按名称提取数据。有什么建议吗?

example of dataframe (sizes) desired table

这可能是一个菜鸟问题,但这恰恰是我在R世界中所要解决的问题,因此任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

我认为下面的示例会有所帮助:

library(dplyr)
data<-iris
data %>% group_by(Species) %>% summarise(Count= n(),Mean=mean(data$Sepal.Width),SD=sd(data$Sepal.Width))

您将在其中按名称将列分组的地方

答案 1 :(得分:0)

以下内容可满足您的需求。我使用了内置数据集iris,选择了一个name列和两个数字列。

主要功能是aggregate。您应该浏览其帮助页面。在R命令提示符下,运行?aggregate

sizes <- iris[5:3]
names(sizes) <- c("name", "height", "weight")
head(sizes)

stats <- function(x){
    c(Sum = sum(x), Mean = mean(x), SD = sd(x), Range = range(x))
}

agg <- aggregate(. ~ name, data = sizes, stats)

colnames(agg$height) <- paste("height", colnames(agg$height), sep = ".")
colnames(agg$height) <- sub("Range1", "Min", colnames(agg$height))
colnames(agg$height) <- sub("Range2", "Max", colnames(agg$height))

colnames(agg$weight) <- paste("weight", colnames(agg$weight), sep = ".")
colnames(agg$weight) <- sub("Range1", "Min", colnames(agg$weight))
colnames(agg$weight) <- sub("Range2", "Max", colnames(agg$weight))

agg <- cbind(agg[1], agg$height, agg$weight)

agg