SAS:multiplyi观察并迭代一列

时间:2016-06-03 14:27:59

标签: sas

我得到了:

data foo;
  length Some_id mileage;
  input Some_id mileage;
  datalines;
1 100
2 200
...
1000 20000
;

我想让每个观察结果重复,里程数由1.1和0.9移动,结果是:

data bar
1 90
1 100
1 110
2 180
2 200
2 220
.... 

我可以用3x数据步骤和2x proc追加来做到这一点,但感觉很愚蠢。

任何更简单的方式?

2 个答案:

答案 0 :(得分:2)

只需使用DO循环。

data bar ;
  set foo ;
  do factor = 0.9, 1, 1.1 ;
    new_mileage = factor * mileage;
    output;
  end;
run;

答案 1 :(得分:-1)

这是一步解决方案,

data foo;
  length Some_id mileage 8;
  input Some_id mileage;
  do factor = 0.9, 1.0, 1.1;
    mileage1 = mileage * factor;
    output;
  end;
  drop factor mileage;
  rename mileage1 = mileage;
  datalines;
  1 100
  2 200
  ;
run;