我想创建一个"table_min_date_100d_per_country"表,其中包含每个国家的COVID病例按日期累计超过100的第一个日期。
我有列date、cas_covid、country。
示例数据为..
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输出为
2020-01-05 COVID cases = 101 country = France谢谢。
发布于 2020-10-19 03:08:35
如果您正在使用SAS,则使用数据步骤获得累积和要容易得多。对于proc sql,没有直接的方法可以做到这一点。假设您的数据名为"old_data“,并且已经按国家/地区和日期进行了排序,下面的代码将按国家/地区创建一个具有累积和("cum_sum")变量的新数据集:
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结果,并仅保留每个国家/地区的最小值,例如:
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;如果您的数据未排序,则应首先运行
proc sort data=old_data;
by country date;诚挚的问候,
https://stackoverflow.com/questions/64257312
复制相似问题