如何在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数据集?