SAS通过数组或一些简单的方法创建多个数据集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAS通过数组或一些简单的方法创建多个数据集相关的知识,希望对你有一定的参考价值。
我的数据看起来像
data have;
input genre1 genre2 genre3 genre4 year type$;
datalines;
1 1 1 1 1990 Y
2 2 2 2 1992 N
3 3 3 3 1998 Y
4 4 4 4 1999 Y
;
run;
我通过这段代码创建了四个数据集
data G1 G2 G3 G4 ;
set have;
genre = genre1; if genre1 then output G1;
genre = genre2; if genre2 then output G2;
genre = genre3; if genre3 then output G3;
genre = genre4; if genre4 then output G4;
run;
并创建新的数据集
data new;
set G1-G4;
run;
但实际上我有很多类型......这段代码太难了。是否有一些方便的方法来创建多数据集?
谢谢!
答案
假设目标是为每个year
创建一个包含type
和genre
重复的新数据集。这样的新数据集想要删除原始的genre1-genre4
。
问题中的代码似乎很难,因为您不熟悉某些SAS概念。
这有两种方式:
使用DATA
Step和array
换位:
data want;
set have;
array genres genre1-genre4;
do _n_ = 1 to dim(genres);
genre = genres(_n_);
output;
end;
keep genre year type;
run;
proc sort data=want;
by genre year type;
run;
使用qazxsw poi换位
Proc TRANSPOSE
这个新数据集是一种分类形式的数据,非常适合SAS用于涉及proc transpose data=have out=want(drop=_name_ rename=col1=genre);
by year type notsorted;
var genre1-genre4;
run;
proc sort data=want;
by genre year type;
run;
或BY
语句的其他DATA或PROC处理。分类变量是CLASS
。
以上是关于SAS通过数组或一些简单的方法创建多个数据集的主要内容,如果未能解决你的问题,请参考以下文章