如何在SAS中合并新行中的两列?
我的数据集如下:如何在SAS中合并新行中的两列?,sas,datastep,Sas,Datastep,我的数据集如下: variable level value ----------------------- Age_group 1 0.1 Age_group 2 0.3 Age_group 3 0.2 Age_group 4 0.5 Sex 1 0.9 0 0.6 我想重新格式化它,使之 variable value -------------------
variable level value
-----------------------
Age_group 1 0.1
Age_group 2 0.3
Age_group 3 0.2
Age_group 4 0.5
Sex 1 0.9
0 0.6
我想重新格式化它,使之
variable value
------------------------
Age_group
1 0.1
2 0.3
3 0.2
4 0.5
Sex
1 0.9
0 0.6
有什么方法可以执行此操作吗?很抱歉,我没有安装Sas,而且我已经三年没有编程了。但这可能会有所帮助。 顺便说一句,关键字段(变量)带有空格是不好的
libname class 'SAS-library';
proc sort data= (yourdataset);
by variable;
run;
data newdata ;
set yourdataset;
by variable;
retain variable;
if first.variable then newvariable=variable;
else newvariable=level;
run;
您需要删除变量并重命名新变量
文件
与数据集相比,“重新格式化”更适合作为输出报告 例如:
data have;
length variable $32;
input variable $ level value;
datalines;
Age_group 1 0.1
Age_group 2 0.3
Age_group 3 0.2
Age_group 4 0.5
Sex 1 0.9
Sex 0 0.6
;
ods html file='report.html' style=plateau;
proc report data=have;
define variable / order order=data noprint;
define level / 'variable';
compute before variable;
line variable $32.;
endcomp;
run;
ods html close;
输出如果您确实希望将输出作为数据集而不是报告(您可能应该考虑),并且不希望更改输入数据集的排序,则以下操作应该有效:
data have;
length variable $32;
input variable $ level value;
datalines;
Age_group 1 0.1
Age_group 2 0.3
Age_group 3 0.2
Age_group 4 0.5
Sex 1 0.9
Sex 0 0.6
;
data newdata;
set have(rename = value = old_val);
if lag(variable) ne variable then output;
variable = left(put(level,best.));
value = old_val;
output;
keep variable value;
run;
我不明白这一点?我编辑了示例。您希望Age\u Group是变量名还是“Age\u Group”是“variable”变量的第一个值?我希望Age\u Group是变量列的第一个值。我编辑了这个问题以便进一步澄清。为什么?这是用于报告目的还是您想要这样的SAS数据集?