【发布时间】:2015-06-11 17:02:36
【问题描述】:
我的数据遇到了问题,我想为每个人id 获取第一个观察到的ob 得分score,然后从最后观察到的score 中减去它。
要求第一次观察减去最后一次观察的问题是,有时第一次观察数据会丢失。
是否需要询问每个人的第一个观察分数,从而跳过任何缺失的数据?
我构建了下面的 df 来说明我的问题。
help <- data.frame(id = c(5,5,5,5,5,12,12,12,17,17,20,20,20),
ob = c(1,2,3,4,5,1,2,3,1,2,1,2,3),
score = c(NA, 2, 3, 4, 3, 7, 3, 4, 3, 4, NA, 1, 4))
id ob score
1 5 1 NA
2 5 2 2
3 5 3 3
4 5 4 4
5 5 5 3
6 12 1 7
7 12 2 3
8 12 3 4
9 17 1 3
10 17 2 4
11 20 1 NA
12 20 2 1
13 20 3 4
而我希望运行的是可以给我的代码......
id ob score es
1 5 1 NA -1
2 5 2 2 -1
3 5 3 3 -1
4 5 4 4 -1
5 5 5 3 -1
6 12 1 7 3
7 12 2 3 3
8 12 3 4 3
9 17 1 3 -1
10 17 2 4 -1
11 20 1 NA -3
12 20 2 1 -3
13 20 3 4 -3
我正在尝试使用 dplyr,并且我了解“group_by”命令的使用,但是,不确定如何“选择”仅首先观察到的分数,然后变异以创建 es。
【问题讨论】: