转置重复测量数据 - 无法正确创建时间变量

问题描述 投票:0回答:2

我有 ID、重复认知测量 (cog1-cog6) 和开始时药物 (SSRI) 的数据。我最终将运行混合程序来确定时间点认知得分与 SSRI 之间的关联。

我的代码如下所示:

**getting relevant variables;

data ucognition;
set analyze (keep=
HHIDPN SSRI 
cog1 cog2 cog3 cog4 cog5 cog6); 
run;


proc transpose data=ucognition out=longcog (rename =(col1=CogScore) rename = (_name_=cog));
by HHIDPN SSRI;
var cog1 cog2 cog3 cog4 cog5 cog6;
run;

proc print data=longcog (obs=10);
run;

到此为止,一切都正常(我认为?)。以下代码是我尝试创建时间变量的地方:

data longcog2;
set longcog;
cog=cog1; time=1; output;
cog=cog2; time=2; output;
cog=cog3; time=3; output;
cog=cog4; time=4; output;
cog=cog5; time=5; output;
cog=cog6; time=6; output;
keep HHIDPN SSRI time cog;
run;

proc print data=longcog2 (obs=10);
run;

这里SAS说cog1,cog2,cog3,cog4,cog5,cog6还没有初始化。

观察 hhidpn SSRI 齿轮时间 1 10210020 无 SSRI 14 1 2 10210020 无 SSRI 13 2 3 10210020 无 SSRI 10 3 4 10210020 无 SSRI 14 4 5 10210020 无 SSRI 10 5 6 10210020 无 SSRI 11 6

我不确定如何解决这个问题,并尝试使用它们运行各种程序,但是当我尝试专门进行时间创建时没有任何反应。我的所有变量都是数字,所以我认为这不是问题。

我也尝试过这样跑步:

data ucognition;
set analyze (keep=
HHIDPN SSRI 
cog1 cog2 cog3 cog4 cog5 cog6); 
run;


proc transpose data=ucognition out=longcog (rename =(col1=CogScore) rename = (_name_=cog));
by HHIDPN SSRI **cog1 cog2 cog3 cog4 cog5 cog6**;
var cog1 cog2 cog3 cog4 cog5 cog6
    ;
run;

proc print data=longcog (obs=10);
run;

data longcog2;
set longcog;
cog=cog1; time=1; output;
cog=cog2; time=2; output;
cog=cog3; time=3; output;
cog=cog4; time=4; output;
cog=cog5; time=5; output;
cog=cog6; time=6; output;
keep HHIDPN SSRI time cog;
run;

proc print data=longcog2 (obs=10);
run;

这可行,但每个人都会重复 6 次,如下所示:

观察 hhidpn SSRI 齿轮时间 1 10210020 无 SSRI 14 1 2 10210020 无 SSRI 13 2 3 10210020 无 SSRI 10 3 4 10210020 无 SSRI 14 4 5 10210020 无 SSRI 10 5 6 10210020 无 SSRI 11 6 7 10210020 无 SSRI 14 1 8 10210020 无 SSRI 13 2 9 10210020 无 SSRI 10 3 10 10210020 无 SSRI 14 4 11 10210020 无 SSRI 10 5 12 10210020 无 SSRI 11 6

是否有一个原因“cog”是我的重命名name=cog变量,不会存储cog1-cog6?它们在初始数据中被命名为 r7cogtot-r12cogtot,但我被告知要这样重命名它们

我照常转换为长数据。我尝试根据重复认知得分创建一个时间变量,但 SAS 不允许我使用“cog”来保存 cog1-cog6,我不知道如何修复

sas linear-regression mixed-models longitudinal
2个回答
0
投票

转置是

ucognition
,显然具有变量
cog1
cog6

尝试

data longcog2;
set ucognition ;
...

而不是

data longcog2;
set longcog;
...

0
投票

这些变量不在您正在读取的数据集中,因为您将它们转置为观察值。

为什么不直接使用转置数据集?您可能只能使用字符变量(您命名为COG)。

如果您需要将其转换为数字,只需使用 substr() 从名称中提取数字后缀,然后使用 INPUT() 将字符串转换为数字。

data longcog2;
  set longcog;
  time = input(substr(cog,4),32.);
  rename CogScore=cog;
  keep HHIDPN SSRI time CogScore;
run;
© www.soinside.com 2019 - 2024. All rights reserved.