我想制作一个数据框的平均值,标准偏差,最大值和最小值的表格,直到知道我已使用此代码实现了该表格。
dt<-data.frame(nuevabase$años_de_educacion,group=factor(nuevabase$año))
abs<-ddply(dt,~ group,summarise,mean=mean(nuevabase$años_de_educacion,na.rm=TRUE)
,sd=sd(nuevabase$años_de_educacion,na.rm=TRUE)
,max=max(nuevabase$años_de_educacion,na.rm=TRUE)
,min=min(nuevabase$años_de_educacion,na.rm=TRUE))
答案 0 :(得分:2)
那又怎么样:由于您尚未发布数据,因此这里是著名的diamonds
数据集的示例。切割就像您的group
,深度像años_de_educacion
:
library(dplyr)
diamonds %>% group_by(cut) %>% summarise(
avg = mean(depth),
stdev = sd(depth),
minval = min(depth),
maxval = max(depth))
所以在您的情况下:
dt<-data.frame(años_de_educacion =nuevabase$años_de_educacion,
group=factor(nuevabase$año))
abs<- dt %>% group_by(group) %>% summarise(
avg = mean(años_de_educacion),
stdev = sd(años_de_educacion),
minval = min(años_de_educacion),
maxval = max(años_de_educacion))
答案 1 :(得分:1)
在基数R中,您可以使用aggregate
执行此操作。我将使用内置数据集iris
举例。
agg <- aggregate(Sepal.Length ~ Species, iris, function(x){
c(mean = mean(x), sd = sd(x), min = min(x), max = max(x))
})
cbind(agg[1], agg[[2]])
# Species mean sd min max
#1 setosa 5.006 0.3524897 4.3 5.8
#2 versicolor 5.936 0.5161711 4.9 7.0
#3 virginica 6.588 0.6358796 4.9 7.9
下面以(好)用户@s_t为例,数据集的代码应为
agg <- aggregate(años_de_educacion ~ año, nuevabase, function(x){
c(mean = mean(x), sd = sd(x), min = min(x), max = max(x))
})
然后是相同的cbind
指令。
请注意,您无需显式强制año
来对factor
进行分类,R足够聪明,可以单独执行。