我正在尝试将一列设为SAS数据集中另一列的“父”列。
以下是数据集:
Column1 Column2
Class1 Subclass1
Class1 Subclass2
Class1 Subclass3
Class2 Subclass4
Class2 Subclass5
Class3 Subclass6
我想创建以下列,其中子类在每个类的下方列出(带有缩进):
NewColumn
Class1
Subclass1
Subclass2
Subclass3
Class2
Subclass4
Subclass5
Subclass6
问题:如何在SAS中做到这一点?
答案 0 :(得分:3)
您可以使用proc手段来复制此输出,但是如果您确实希望在数据集中将其复制,则可以使用以下内容:
data want;
set have;
by column1 column2;
format new_column $15.;
if first.column1 then do;
new_column=column1;
output;
end;
new_column=put(column2,$15. -r); * right align;
output;
run;
答案 1 :(得分:3)
在统计上测量关联的响应变量时,通常需要过程TABULATE
或REPORT
的输出中需要这种分类层次显示形式。
以下是这些proc的一些示例代码:
title;
ods html close;
ods html style=plateau;
data have;
do rows = 1 to 100;
_n_ = ceil(3*ranuni(123));
level1 = cats('Class', _n_);
level2 = cats('Subclass ', ceil(3*(_n_-1) + 3 * ranuni(123)));
x = _n_ * 100 + ceil (50*ranuni(123));
output;
end;
run;
proc tabulate data=have;
class level1 level2;
var x;
table
level1 * (all level2)
,
x * (mean n)
/
nocellmerge
;
run;
proc report data=have;
columns level1 level2 nested x x=n;
define level1 / group noprint;
define level2 / group noprint;
define nested / computed width=50;
define x / 'X (Mean)' mean format=6.2;
define n / 'N' N;
break before level1 / summarize;
compute nested / char length=50;
if missing(level2) then
nested = level1;
else
nested = "A0202020"x || level2;
endcomp;
run;