如何在sas报告中将四列拆分为两个表

时间:2018-02-27 12:06:15

标签: sas report

我有一个包含4列的表,我想将它们分成一个表中的2个表2列和另一个表中的2列。但是这两个表应该在彼此下面。我想在proc报告format.code中应该在报告中。

id name age gender
1  abc  21  m
2  pqr  23  f
3  qwe  25  f
4  ert  54  m

我希望在一张桌子中使用id和名字,在其他表格中使用年龄和性别。但在ods中,一个在另一个下面。

2 个答案:

答案 0 :(得分:0)

我使用数据setp将主表拆分为两个表,然后将它们相互附加,我添加了一个名为“source”的额外列,以便在表之间有所不同。如果您使用Proc报告,您可以按“来源”分组

代码:

*Create input data*/
data have;
input id name $ age gender $  ;
datalines;
1 abc 21 m
2 pqr 23 f
3 qwe 25 f
4 ert 54 m
;;;;
run;
/*Split / create first table*/
data table1;
set have;
source="table1: id & name";
keep source id name ;
run;
/*Split / create second table*/
data table2;
set have;
source="table2: age & gender";
keep source age gender;
run;
/*create Empty table*/
data want;
length Source $30. column1 8. column2 $10.;
run;
proc sql; delete * from want; quit;
/* Append both tables to each other*/
proc append base= want data=table1(rename=(id=column1 name=column2)) force ; run;
proc append base= want data=table2(rename=(age=column1 gender=column2)) force ; run;
/*Create Report*/
proc report data= want;
col source column1 column2 ;
define source / group;
run;

输出表:

OutputTable

报告:

Proc Report

答案 1 :(得分:0)

对于数据

data have;input
id name $ age gender $; datalines;
1  abc  21  m
2  pqr  23  f
3  qwe  25  f
4  ert  54  m
run;

作为Excel输出,可以通过两个Proc REPORT步骤分成两部分;每个步骤负责一组列。 ODS EXCEL中使用选项来控制表格处理的处理方式。

第一步通过DEFINE管理公共标头,后续步骤为NOHEADER,不需要DEFINE语句。每个步骤都必须定义并计算新source列的值。每个表之间会有一个Excel行间距。

ods _all_ close;
ods excel file='want.xlsx' options(sheet_interval='NONE');

proc report data=have;
  column source id name;
  define id / 'Column 1';
  define name / 'Column 2';
  define source / format=$20.;
  compute source / character length=20; source='ID and NAME'; endcomp;
run;
proc report data=have noheader;
  column source age gender;
  define source / format=$20.;
  compute source / character length=20; source='AGE and GENDER'; endcomp;
run;

ods excel close;

没有合理的 Proc REPORT步骤可以从数据集have生成类似的输出。

enter image description here