我有一个数据集,如下所示(每个参与者都有数千行数据):
participant-ID date duration
-------------------------------------------
id-1 01.01.2020 35
id-1 01.01.2020 15
id-1 01.01.2020 3
id-1 02.01.2020 120
id-1 02.01.2020 5
id-2 20.01.2020 13
id-2 20.01.2020 10
id-2 21.01.2020 450
id-2 21.01.2020 1对数据的一些解释:对于每个参与者,我们每天收集几个星期的数据(每个参与者有不同的开始和结束日期),测量他们使用智能手机的持续时间。
First,我要重新构造,以便为每个参与者和每个日期(第1天、第2天、.)计算持续时间和时间。应该是这样的:
participant-ID date day duration_sum
-----------------------------------------------------------
id-1 01.01.2020 1 53
id-1 02.01.2020 2 125
id-2 20.01.2020 1 23
id-2 21.01.2020 2 451第二次,我想要创建另一个重构的数据集,这样我就可以为每个参与者获得一行和每个单独一天(第1天、第2天、第3天、.)的持续时间总和。在这种情况下,日期是无关紧要的。
participant-ID duration_sum_day1 duration_sum_day2 ...
----------------------------------------------------------------------
id-1 53 125 ...
id-2 23 451 ...我很感谢你的建议!
发布于 2020-05-05 12:42:29
这需要几步。首先,我将重新创建要演示的示例数据:
data list list/ID (a10) date (edate10) duration (f6).
begin data
id-1 01.01.2020 35
id-1 01.01.2020 15
id-1 01.01.2020 3
id-1 02.01.2020 120
id-1 02.01.2020 5
id-2 20.01.2020 13
id-2 20.01.2020 10
id-2 21.01.2020 450
id-2 21.01.2020 1
end data.现在开始工作:
* first step: summing durations per day (per ID).
dataset declare aggdata.
aggregate out=aggdata /break ID date /durationSum=sum(duration).
dataset activate aggdata.
* second step - creating a day index.
aggregate out=* mode=add /break ID/fstDay=min(date).
compute day=datediff(date, fstDay, "days")+1.
format day(f).
third step - restructure.
casestovars /id=ID /index=day /sep="_"/drop date.https://stackoverflow.com/questions/61590358
复制相似问题