【发布时间】:2011-10-25 09:17:43
【问题描述】:
我需要有关 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 值。
请帮帮我。
数据示例: 部分文字
【问题讨论】:
-
Nupur,你能举一个你的数据的例子吗?我无法复制您的错误。
-
当然。我正在尝试在这里制作一个小表格,向您展示我的数据的外观,但我无法做到这一点。你能告诉我该怎么做吗?
-
只是一些简单的东西,比如:options obs=10;过程打印数据=临时; var patid text datanumber;
-
Nupur,我仍然无法制作数据集来复制您的错误,但这里有一些建议。 1) 在第二个代码框中,您需要在 TEMP 数据集名称和 BY 语句之间添加一个分号。 2) 更正IF语句中FIRST.DATANUMBER的拼写。 3)您可能需要对您正在尝试的内容使用 RETAIN N 语句。如果您可以提供实际数据的示例,那么我们可以更好地诊断错误。
-
您好 RWill 非常感谢您的回复。您的建议奏效了:)...我想将每个观察的所有内容放在一行中,以便每个 patid 将有一行与相关的数据编号。该代码已将我的数据转换为数据编号,现在作为变量,但我仍然拥有与之前 patid 相同的行数。数据编号(作为变量)的值在每个 patid 的不同行中。有没有办法解决这个问题?如果我没有以可以理解的方式解释它,请告诉我。再次感谢您的所有帮助