R题:如何将汇总结果保存到数据集中 [英] R question: how to save summary results into a dataset

查看:54
本文介绍了R题:如何将汇总结果保存到数据集中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一名 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题:如何将汇总结果保存到数据集中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆