首页 > 解决方案 > 在 sas 中使用 do 循环

问题描述

假设您有一个来自传染病研究中心的名为 VIRUS_PROLIF 的数据文件。每个观察有 3 个变量 COUNTRY START_DATE 和 DOUBLE_RATE,其中 START_DATE 是该国家/地区登记第 100 例 COVID-19 病例的日期。对于每个国家/地区,DOUBLE_RATE 是该国家/地区的病例数翻倍所需的天数。使用 DO UNTIL 编写 SAS 代码,以计算该国家预计登记 200,000 例 COVID-19 病例的日期。

  data VIRUS_PROLIF;
INPUT COUNTRY $ start_date mmddyy10. num_of_cases double_rate ;
*here doubling rate is 100% so if day 1 had 100 cases day 2 will have 200;
 Datalines;
 US 03/13/2020 100 100
  ;
 run;

data VIRUS_PROLIF1 (drop=start_date);
set VIRUS_PROLIF;
 do until (num_of_cases>200000);
double_rate+1;
num_of_cases+ (num_of_cases*1);
end;
 run;
 proc print data=VIRUS_PROLIF1;
 run;

标签: sas

解决方案


问题200,000 < N 0 (1+R/100) k无需迭代即可求解整数k

   day_of_200K = ceil ( 
        LOG ( 200000 / NUM_OF_CASES ) 
      / LOG ( 1 + R / 100 ) 
    );   

推荐阅读