Следующее делает то, что вы хотите. Я использовал встроенный набор данных 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