首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用proc-sql累计求和

使用proc-sql累计求和
EN

Stack Overflow用户
提问于 2020-10-08 15:00:15
回答 1查看 79关注 0票数 1

我想创建一个"table_min_date_100d_per_country"表,其中包含每个国家的COVID病例按日期累计超过100的第一个日期。

我有列datecas_covidcountry

示例数据为..

代码语言:javascript
复制
Date              Cas_covid          country
2019-12-31            10             France
2020-01-01            15             France
2020-01-02            45             France       
2020-01-03            5              France
2020-01-04            15             France
2020-01-05            11             France

输出为

代码语言:javascript
复制
2020-01-05    COVID cases = 101      country = France

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-19 03:08:35

如果您正在使用SAS,则使用数据步骤获得累积和要容易得多。对于proc sql,没有直接的方法可以做到这一点。假设您的数据名为"old_data“,并且已经按国家/地区和日期进行了排序,下面的代码将按国家/地区创建一个具有累积和("cum_sum")变量的新数据集:

代码语言:javascript
复制
data temp_data;
set old_data;
by country;
if first.country then cum_sum=0;
cum_sum+Cas_covid;
run;

在按国家/地区计算累计和之后,如果您愿意,可以使用proc sql获得所需的输出,方法是只评估超过99的cum_sum结果,并仅保留每个国家/地区的最小值,例如:

代码语言:javascript
复制
proc sql;
create table table_min_date_100d_per_country as
select distinct
date,
cum_sum as COVID_cases,
country
from temp_data
group by country /*This line gets you summarizing statistics by country*/
where cum_sum >= 100 /*This line says that you only evaluate results >= 100*/
having COVID_cases = min(COVID_cases) /*Within the end table, you only keep the minimum number of covid cases per country (after preselecting above 99)*/;
quit;

如果您的数据未排序,则应首先运行

代码语言:javascript
复制
proc sort data=old_data;
by country date;

诚挚的问候,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64257312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档