gpt4 book ai didi

sas - 在 SAS 中按组处理

转载 作者:行者123 更新时间:2023-12-04 03:04:27 26 4
gpt4 key购买 nike

我有一个带有索引日期时间字段的非常大的表。我想按月对数据集进行分组处理,只输出每个月的最后一个观察值。

问题是它不包含月份字段,所以我不能使用这样的东西:

if last.month then do;
output;
end;

有没有一种方法可以实现这种行为而不必在之前的数据步骤中添加月份字段?该表压缩了 50 gig,因此我想避免任何不必要的步骤。

谢谢

最佳答案

您实际上可以针对原始数据集使用“by groupformat”来实现这一点,将日期时间字段格式化为“dtmonyy5”。顾名思义,这按格式化值而不是原始值分组。

data new1;
set old;
format datetime dtmonyy5.;
by groupformat datetime;
if last.datetime;
run;

另一种方法是使用 Proc Summary,尽管这可能会占用大量内存,尤其是针对大型数据集。这是代码。

proc summary data=old nway;
class datetime;
format datetime dtmonyy5.;
output out=new2 (drop=_:) maxid(datetime(_all_))=;
run;

只是对上一个答案的快速说明,“月份”函数适用于日期字段,而不是日期时间,因此您需要将 datepart 函数添加到该行。

month = month(datepart(datetime));

关于sas - 在 SAS 中按组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com