我需要帮助SAS中的proc转置程序。我的代码最初是:
proc transpose data=temp out=temp1;
by patid;
var text;
Id datanumber;
run;
这给了我错误“ID值”“在同一个BY组中出现两次”。我将代码修改为:
proc sort data = temp;
by patid text datanumber;
run;
data temp;
set temp by patid text datanumber;
if first.datanunmber then n = 0;
n+1;
run;
proc sort data = temp;
by patid text datanumber n;
run;
proc transpose out=temp1 (drop=n) let;
by patid;
var text;
id datanumber;
run;
这给了我错误:无法识别变量n。添加let选项会产生很多错误“在同一个BY组中出现两次”。我想保留所有id值。
请帮助我。
数据示例: Patid Text
答案 0 :(得分:2)
当您收到该错误时,它会告诉您,您尝试创建的一个或多个变量有多个数据点。如果将“let”添加到proc转置行,SAS可以强制转置并删除额外的数据点。
答案 1 :(得分:0)
您的数据可能不是唯一的?我创建了一个数据集(具有独特的patid和datanumber值),转置工作:
data temp (drop=x y);
do x=1 to 4;
PATID='PATID'||left(x);
do y=1 to 3;
DATANUMBER='DATA'||left(y);
TEXT='TEXT'||left(x*y);
output;
end;
end;
proc sort; by _all_;
proc transpose out=temp2 (drop=_name_);
by patid;
var text;
id datanumber;
run;
我的建议是忘记'n'修复并专注于使数据对于patid和datanumber是唯一的,一个肮脏的方法是:
proc sort data = temp nodupkey;
by patid datanumber;
run;
代码开头..