我们定期收到 SPSS 数据集,其中包含患者、事件名称和填写问卷的日期。每条记录都是患者 ID、事件名称以及每份调查问卷的日期列。
我们希望将数据转换为每个患者的单个记录,其中包含每个调查问卷/事件名称组合与调查问卷日期的列。生成的数据集将用于更轻松地查看哪些患者需要提醒或哪里缺少问卷,以便管理人员可以发送提醒、关闭案例等。请参阅下面的示例数据集(我已将其复制到 Excel 以添加颜色)
以及所需的结果数据集:
这是我到目前为止使用这个小示例数据集得到的语法(真实数据集更大并且有更多列)。
data list free /PatientId (A7) Eventname (A10) RandGroup (A10) Question1 (DATE10) Question2 (DATE10).
begin data
PAT1001 Baseline group_II 05-03-2022 ""
PAT1001 month3 "" "" 10-06-2022
PAT1001 month12 "" "" 12-03-2023
PAT2002 Baseline group_IV 22-10-2022 ""
PAT2002 month3 "" 21-02-2023 22-02-2023
PAT3003 Baseline group_I 29-11-2021 07-12-2021
PAT3003 month3 "" "" 27-02-2022
PAT3003 month12 "" 01-12-2022 03-12-2022
end data.
SORT CASES BY PatientId, Eventname.
CASESTOVARS
/ID = PatientId
/INDEX = EventName
/GROUPBY = VARIABLE.
此语法有效,但另一个要求是我们要指定新的列名称。而不是
Question1.Baseline
、Question2.month12
等。我们希望生成的列名称为 Q1_BASE
、Q2_M12
等。我知道我可以像这样手动重命名列:
rename variables (Question1.Baseline = Q1_BASE).
rename variables (Question1.month3 = Q1_M3).
rename variables (Question1.month12 = Q1_M12).
然而,在真实的数据集中,有更多的调查问卷列,而且在后来的数据集中,调查问卷列可能有不同的名称。所以我正在寻找一种更系统/面向未来的方法来做到这一点
那么,
CASESTOVARS
中是否有一个参数也可以获取所需的列名称?
获得所需短名称的一种更简单的方法是在
casestovars
之前重命名变量。您也可以使用 separator
子命令来更改结果名称:
rename variables (Baseline month3 month12 = BASE M3 M12)
(question1 to question70 = Q1 to Q70).
CASESTOVARS
/ID = PatientId
/INDEX = EventName
/GROUPBY = VARIABLE
/separator="_".