为数组中的变量赋予另一个数组中的变量值

时间:2014-02-22 23:22:29

标签: arrays sas

所以,我有一系列的sas日期(18141到18414)和一系列id号码(m101-m254)。我希望日期范围中的每个值对于id范围中的每个值都显示一次,以便

date  id
18141 m101
18142 m101
18143 m101
..    ..
18414 m102
18141 m102
18142 m102
18143 m102
..    ..
18414 m102

我一直在尝试这个:

data data;
array linx (274) d18141-d18414;
array ids(154) m101-m254;
retain d18141-d18414 m101-m254;
do i=1 to 274;
do j=1 to 154;
linx(i)=ids(j);
end;
end;
run;

但sas只是将两个阵列并排放在一起。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

阵列并不是解决这个问题的正确方法。数组跨越一行;你用行而不是列来做这个。

普通的旧do循环将使用output语句为您执行此操作。

data want;
do id_n=101 to 254;
  do date='18141'd to '18414'd;
    id=cats('m',id_n);
    output;
  end;
end;
run;