我正在为正在处理的数据集创建质量控制变量。它采用长格式,每个主题具有> 100行。这些行代表他们记录活动代码的时间段(按时间顺序)。真的很酷的做法是创建一个新变量,该变量计算人员更改其活动代码的次数(理想情况下,忽略已定义的丢失数据)。
有人从哪里开始有任何想法吗?我在这些选项中所能看到的就是创建一个频率表,该频率表列出了每个活动发生的频率。而不是改变的时间。
任何帮助将不胜感激。
答案 0 :(得分:0)
首先,我将创建一些虚假数据进行演示:
data list list/ID (a1) actvt1 to actvt5 (5f1).
begin data
"a", 1, 1, 2, 2, 3
"b", 1, , 1, 2, 2
"c", 1, , 2, 2,
"d", , 1, 1, 1, 2
"e", , , 3, 2, 1
end data.
varstocases /make activity from actvt1 to actvt5/null=keep.
以下语法将跳过丢失的数据,并计算每个ID中活动代码的更改次数-将其添加到数据集中。
compute tmp=activity.
if $casenum>1 and missing(tmp) and ID=lag(ID) tmp=lag(tmp).
if $casenum>1 and ID=lag(ID) and tmp<>lag(tmp) change=1.
aggregate /out=* mode=add /break=ID /changes=sum(change).