Proc转置额外的列?
Proc transpose extra columns?
我有一组数据,我从中提取了 id 和 reason_cd。可能有多种原因,因此存在重复的 ID。由于原因,我想将其转置为每个 Id 一行和多列。
使用下面的作品。但是,Name 和 Label 会弹出两列,每个 Id 的值为 'reason_cd'。为什么会有这些,是否可以在不执行另一个数据步骤来删除它们的情况下将它们删除?
proc transpose data=aars out=test prefix=decline_reason;
by ID;
var reason_cd;
run;
_NAME_ 变量具有原始变量的名称(当您使用 PROC TRANSPOSE 从多个变量转换为多个行时很有用)。只有在一个或多个转置变量附加了标签时,_LABEL_ 变量才会出现。
因此使用 DROP= dataset 选项删除_NAME_变量。使用 LABEL 语句从变量中删除标签将删除 _LABEL_ 变量。
proc transpose data=aars out=test(drop=_name_) prefix=decline_reason;
by ID;
var reason_cd;
label reason_cd=' ';
run;
如果您需要更多控制,请使用数据步骤对我们的转置算法进行编码。
data want;
do index=1 to 4 until(last.id);
set aars end=eof;
by id;
array decline_reason [4] 8;
decline_reason[index]=reason_cd;
end;
drop reason_cd index ;
run;
如果 REASON_CD 是字符而不是数字,则将 ARRAY 语句将用于创建新变量的长度规范从 8 更改为 $ 后跟所需的长度。
我有一组数据,我从中提取了 id 和 reason_cd。可能有多种原因,因此存在重复的 ID。由于原因,我想将其转置为每个 Id 一行和多列。
使用下面的作品。但是,Name 和 Label 会弹出两列,每个 Id 的值为 'reason_cd'。为什么会有这些,是否可以在不执行另一个数据步骤来删除它们的情况下将它们删除?
proc transpose data=aars out=test prefix=decline_reason;
by ID;
var reason_cd;
run;
_NAME_ 变量具有原始变量的名称(当您使用 PROC TRANSPOSE 从多个变量转换为多个行时很有用)。只有在一个或多个转置变量附加了标签时,_LABEL_ 变量才会出现。
因此使用 DROP= dataset 选项删除_NAME_变量。使用 LABEL 语句从变量中删除标签将删除 _LABEL_ 变量。
proc transpose data=aars out=test(drop=_name_) prefix=decline_reason;
by ID;
var reason_cd;
label reason_cd=' ';
run;
如果您需要更多控制,请使用数据步骤对我们的转置算法进行编码。
data want;
do index=1 to 4 until(last.id);
set aars end=eof;
by id;
array decline_reason [4] 8;
decline_reason[index]=reason_cd;
end;
drop reason_cd index ;
run;
如果 REASON_CD 是字符而不是数字,则将 ARRAY 语句将用于创建新变量的长度规范从 8 更改为 $ 后跟所需的长度。