在 SPSS 中转置数据
Transposing Data in SPSS
我有一个只有四个变量(列)的 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 有时会重复。 (作为旁注,我没有其他变量可以使用)。
我是否必须删除重复的案例,或者有其他方法可以实现吗?我不愿意删除重复项,因为我不知道哪些情况可能很重要(没有其他信息,将重复项标识为 primary/last 是任意的)。数据文件也有数百万个案例。
我正在使用安装了 python 的 SPSS stats v. 24。我也可以访问 R,但从未使用过它。
如能提供任何帮助,我们将不胜感激!
您需要创建一个额外的变量来指示重复项,并将其添加到您的 casestovars
命令中的 ID=
列表中:
*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="_".
我有一个只有四个变量(列)的 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 有时会重复。 (作为旁注,我没有其他变量可以使用)。
我是否必须删除重复的案例,或者有其他方法可以实现吗?我不愿意删除重复项,因为我不知道哪些情况可能很重要(没有其他信息,将重复项标识为 primary/last 是任意的)。数据文件也有数百万个案例。
我正在使用安装了 python 的 SPSS stats v. 24。我也可以访问 R,但从未使用过它。
如能提供任何帮助,我们将不胜感激!
您需要创建一个额外的变量来指示重复项,并将其添加到您的 casestovars
命令中的 ID=
列表中:
*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="_".