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创建一个包含typegenre重复的新数据集。这样的新数据集想要删除原始的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通过数组或一些简单的方法创建多个数据集的主要内容,如果未能解决你的问题,请参考以下文章

SAS编程基础 - 数据获取与数据集操作

嵌套如果做语句SAS

SAS 对数据的拼接与串接

sas自定义标签可以包含多少字符

通过PRINT过程制作报表

SAS 查看临时数据集