SAS proc在R中表示等效
我必须把一些人的SAS代码翻译成R,因为我的公司正在从SAS迁移,我想知道是否有一个可比的R函数来表示proc?作为参考,proc means products(或至少我需要它生成的内容)是观察数、平均值、最小值、最大值和标准偏差。同样重要的是,这可以通过分组和加权来完成。R中的summary函数生成这个输出,但我认为您不能这样做。我更喜欢使用base R的答案,但如果不存在,则可以使用包 例如:SAS proc在R中表示等效,r,sas,summary,weighted,R,Sas,Summary,Weighted,我必须把一些人的SAS代码翻译成R,因为我的公司正在从SAS迁移,我想知道是否有一个可比的R函数来表示proc?作为参考,proc means products(或至少我需要它生成的内容)是观察数、平均值、最小值、最大值和标准偏差。同样重要的是,这可以通过分组和加权来完成。R中的summary函数生成这个输出,但我认为您不能这样做。我更喜欢使用base R的答案,但如果不存在,则可以使用包 例如: df Temp V1 Weight 1 Hi 1 8 2 Low 2
df
Temp V1 Weight
1 Hi 1 8
2 Low 2 3
3 Hi 3 9
4 Low 4 9
我需要按组生成V1的各种加权汇总统计数据(中位数、最小值、最大值、总和、平均值等),如下所示:
Group Min Max Mean Sum
Hi 1 3 2.06 35
Low 2 4 3.5 42
通常,基本R中的
aggregate
可以作为SAS的proc means
的对应项。通常,此方法在单个数值列上运行单个简单函数(接受一个输入)。以下是该方法的公式版本:
aggregate(V1 ~ Temp, df, FUN=mean)
但是,aggregate
可以扩展到多个列和多个函数:
agg_raw <- aggregate(cbind(V1, Weight) ~ Temp, df,
FUN = function(x) c(count = length(x),
min = min(x),
p = quantile(x, 2, probs = seq(0, 1, 0.25))[2],
median = median(x),
mean = mean(x),
p = quantile(x, 2, probs = seq(0, 1, 0.25))[4],
sum = sum(x))
)
agg_df <- do.call(data.frame, agg_raw)
agg_df
# Temp V1.count V1.min V1.p.25. V1.median V1.mean V1.p.75. V1.sum Weight.count Weight.min Weight.p.25. Weight.median Weight.mean Weight.p.75. Weight.sum
# 1 Hi 2 1 1.5 2 2 2.5 4 2 8 8.25 8.5 8.5 8.75 17
# 2 Low 2 2 2.5 3 3 3.5 6 2 3 4.50 6.0 6.0 7.50 12
一旦有了这些列,就可以在min
和max
上进行聚合,以返回分组需求:
agg_df如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易为您提供帮助。假设SAS函数不存在,只需准确地解释您想在R中做什么。作为一名R和SAS程序员,在我看来,没有一个很好的函数,尤其是当您需要不同级别的摘要时。PROC FREQ/MEANS是我在SAS中错过的最重要的事情。。我通常只使用tidyverse方法来建立自己的统计数据,因此更类似于使用PROC SQL而不是PROC MEANS。@astel,RStudio社区通常更有用-没有SAS社区论坛那么活跃,但您会在合理的时间范围内得到答案。已经编写了很多函数来汇总数据。如果你愿意去探索,你可能会找到一些你想要的东西。一些示例(包::函数):base::summary
,RcmdrMisc::numSummary
,DecTools::Desc
,Hmisc::description
,'pastecs::stat.Desc',和psych::descripe
。这并不是详尽无遗的,只是我发现有用的一些方法。