merge by ID 么? 用macro很容易实现
- %macro combine();
- %local i;
- %do i = 400 %to 800;
- proc sort data = hjr(where = (wave = &i) rename = (ref = r&i)) out = r&i(keep = id r&i); by id; run;
- %end;
- data combine;
- merge %do i = 400 %to 800; r&i %end;;
- by id;
- run;
- %mend;
- %combine();
复制代码如果你的原始数据是unique at ID, wave level的,比如说同一个id, wave = 400只会出现一次的情况下,可以用transpose procedure。
- proc sort data = hjr(where = (400 <= wave <= 800)) out = subset; by id wave; run;
- proc transpose data = subset out = combine(drop = _name_) prefix = R;
- by id;
- id wave;
- var ref;
- run;
复制代码