我有一个只有四个变量(列)的SPSS数据文件,我试图进行转置。原始文件如下所示:
ItemID StudentID Score Weight
123 a1 1.0 1.0
123 a1 0.0 1.0
123 a2 1.0 1.0
124 a1 0.0 5.0
124 a2 1.0 5.0
我想要获得的将使用StudentID作为标识符变量,还可以根据ItemID创建新变量。因此,上述数据将转换为:
StudentID score_123 weight_123 score_124 weight_124
a1 1.0 1.0 0.0 5.0
a2 0.0 1.0 1.0 5.0
我尝试过的语法是:
SORT CASES BY StudentID ItemID.
CASESTOVARS
/ID=StudentID
/INDEX=ItemID
/GROUPBY=INDEX
/VIND ROOT=ind.
但由于数据文件中的重复措施,这显然失败了;有时会重复StudentID和ItemID。 (作为旁注,我没有其他变量可供使用)。
我是否必须删除重复的案例,还是有其他方法可以实现此目的?我不愿意删除重复项,因为我不知道哪些案例可能很重要(没有其他信息,将重复项标识为主要/最后一项是任意的)。该数据文件也有数百万个案例。
我使用安装了python的SPSS stats v.24。我也可以访问R但从未使用它。
任何可以传递的帮助都将非常感谢!
答案 0 :(得分:1)
您需要创建一个额外的变量来指示重复项,并将其添加到ID=
命令中的casestovars
列表中:
*this is just to recreate your example data.
data list free/StudentID (a4) ItemID Score Weight (3f4) .
begin data
a1 123 1 1
a1 123 0 1
a2 123 1 1
a1 124 0 5
a2 124 1 5
end data.
现在创建DUP变量,该变量将计算(StudentID X ItemID)组合的重复项。第一次出现将获得零值。
sort cases by StudentID ItemID.
compute dup=0.
if $casenum>1 and lag(StudentID)= StudentID and lag(ItemID)=ItemID dup=lag(dup)+1.
现在将DUP添加到重组命令将使您到达所需的位置:
sort cases by StudentID dup ItemID.
CASESTOVARS /ID=StudentID dup /INDEX=ItemID /GROUPBY=INDEX/sep="_".