我需要操纵纵向数据才能在逻辑回归中使用。
目前的数据是:
ID Period Smoke
1 1 1
1 2 1
1 3 1
2 1 0
2 2 1
2 3 1
3 1 1
3 2 1
3 3 0
但我需要将其操纵为这种形式:
ID Period1Smoke Period2Smoke Period3Smoke
1 1 1 1
2 0 1 1
3 1 0 0
基本上,我需要以某种方式结合Period&吸烟,然后通过ID转换为宽格式。 (另外,我需要在几个var& ~5,000个人身上做到这一点。)
有什么建议?谢谢!
答案 0 :(得分:0)
在proc转置中,ID在BY语句中指定我们只需要在输出数据集中为每个不同的ID值进行一次观察。 ID语句中的句点表示将在输出数据集中为Period的每个不同值创建新变量。要转置的变量(Smoke)在VAR语句中指定。使用prefix =和suffix = options来控制如何命名新变量。
有关proc转置语法的介绍,请参阅此this论文。
proc transpose data=have out=want (drop=_name_) prefix=Period suffix=Smoke;
by ID;
id Period;
var Smoke;
run;