我是一名 SAS 程序员,正在尝试学习 R.如果是 SAS,我会这样做以将描述性统计数据的结果保存到数据集中:
I'm a SAS programmer trying to learn R. If SAS, I would do this to save results of descriptive stats into a dataset:
proc means data=abc; var var1 var2 var3; ods output summary=result1; run;我认为在 R 中,应该是这样的:摘要(abc)->result1
I think in R, it would be this: summary(abc)->result1
有人告诉我这样做.as.data.frame(unclass(summary(new_scales)))->new_table
Someone told me to do this. as.data.frame(unclass(summary(new_scales)))->new_table
但是这个表中的结果不是很有用.
But the result in this table is not very usable.
是否可以获得更好的结构化结果,就像我从 SAS PROC MEANS 中得到的那样?我希望列看起来像:变量名称、平均值、标准差、最小值、最大值等.和列携带每个变量的结果.
Is there away to get a better structured result like I would get from SAS PROC MEANS? I would like columns to look like: variable name, Mean, SD, min, max, etc. and columns carry results from each variable.
推荐答案考虑sapply(隐藏循环返回等长对象作为输入)创建聚合结果矩阵:
Consider sapply (hidden loop to return equal length object as input) to create a matrix of aggregation results:
# SINGLE AGGREGATE stats_vector <- sapply(abc[c("var1", "var2", "var3")], function(x) mean(x, na.rm=TRUE))) # MULTIPLE AGGREGATES stats_matrix <- sapply(abc[c("var1", "var2", "var3")], function(x) c(count=length(x), sum=sum(x), mean=mean(x), min=min(x), q1=quantile(x)[2], median=median(x), q3=quantile(x)[4], max=max(x), sd=sd(x))) )如果您的 proc 表示 使用 class 进行分组,则使用返回数据框的 aggregate:
If your proc means uses class for grouping, then use aggregate which returns a data frame:
# SINGLE AGGREGATE mean_df <- aggregate(cbind(var1, var2, var3) ~ group, abc, function(x) mean(x, na.rm=TRUE))) # MULTIPLE AGGREGATES agg_raw <- aggregate(cbind(var1, var2, var3) ~ group, abc, function(x) c(count=length(x), sum=sum(x), mean=mean(x), min=min(x), q1=quantile(x)[2], median=median(x), q3=quantile(x)[4], max=max(x), sd=sd(x))) ) agg_df <- do.call(data.frame, agg_raw)Rextester 演示
更多推荐
R题:如何将汇总结果保存到数据集中
发布评论