我有下面的数据框,显示了抽样事件,当观察到每个人时,我想要一个新的列,显示当前观察和上一次最近观察之间的抽样事件的数量.
我所拥有的是这样的:
tibble(ind=c(rep("A",10),rep("B",10)),
event=c(c(1:10),c(1:10)),
obs=c(NA,NA,1,2,NA,NA,NA,4,NA,5,1,NA,NA,NA,2,NA,3,4,NA,5))
# A tibble: 20 × 3
ind event obs
<chr> <int> <dbl>
1 A 1 NA
2 A 2 NA
3 A 3 1
4 A 4 2
5 A 5 NA
6 A 6 NA
7 A 7 NA
8 A 8 4
9 A 9 NA
10 A 10 5
11 B 1 1
12 B 2 NA
13 B 3 NA
14 B 4 NA
15 B 5 2
16 B 6 NA
17 B 7 3
18 B 8 4
19 B 9 NA
20 B 10 5
我想要的是这样,其中Missed.Events=(OBS[i]处的事件)-(OBS[i-1]处的事件)-1:
# A tibble: 20 × 4
ind event obs missed.events
<chr> <int> <dbl> <dbl>
1 A 1 NA NA
2 A 2 NA NA
3 A 3 1 NA
4 A 4 2 0
5 A 5 NA NA
6 A 6 NA NA
7 A 7 NA NA
8 A 8 4 3
9 A 9 NA NA
10 A 10 5 1
11 B 1 1 NA
12 B 2 NA NA
13 B 3 NA NA
14 B 4 NA NA
15 B 5 2 3
16 B 6 NA NA
17 B 7 3 1
18 B 8 4 0
19 B 9 NA NA
20 B 10 5 1
我确信我在这里遗漏了一些明显的东西,我try 了group_by(ind) %>% mutate()
参数中的各种Case_When()和If_Else()条件,但不能完全弄清楚这一点.
先谢谢你