全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
928 2
2021-12-13

有一段SAS程序,需要用R实现。问题主要是关于if和do。

下面SAS程序里,%macro abc的if不能用R 的if statement(if只对比第一行)。所以我考虑用ifelse。这样就解决了t和f的对比问题。


可是后面的Do循环该怎么办呢?特别是那个r。我考虑用R里面的apply()系列函数,但也没想好怎么办。

也许还有更好的办法,欢迎指教。

data One;

        input  t f u s ;

        cards;

0  1  10000 5

5  2  20000 6

2  1  30000 7

3  2  40000 8

0  4  50000 9

7  6  60000 3

2  2  70000 2                                      

;

run;

%macro abc;

  sum = 0;

  if t - f >=0 then do;

    Do i=0 to (f-1);

      sum = sum + u * max(0, r);

    end;

  end;

  else do;

    Do i=1 to t;

      sum = sum + 2;

    end;

    sum = sum + 88;

  end;

  drop i;

%mend;

data Two;

  set One;

  array r{0:7} _temporary_;

  r[t] = s;

  %abc;

run;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-12-13 23:10:47
do 是不是 R 里面的 when 循环,主要是我看不懂 SAS 代码的意思
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-12-14 12:23:41
s609078902 发表于 2021-12-13 23:10
do 是不是 R 里面的 when 循环,主要是我看不懂 SAS 代码的意思
你是说case_when还是while。我觉得主要问题是怎么在ifelse里面写循环,感觉要用apply函数,不过还没想出来。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群