我正在尝试识别纵向数据集中的最后一个letter
。ID
假设我的数据看起来像这样,
dfL <- data.frame(ID = c(1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 9L, 9L, 9L, 9L, 9L, 10L), week = c("BS", 4L, 6L, "BS", 6L, 9L, 9L, 12L, "BS", 4L, 6L, 9L, 12L, "BS"), outcome = c(14L, 28L, 42L, 14L, 46L, 64L, 71L, 85L, 14L, 28L, 51L, 66L, 84L, 0L), letter = c("a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", NA, NA)); dfL
每个ID
都有 s 串字母(a
和b
's),我需要找到其中的最后一个字母ID
并将其放在基线上。
ID week outcome letter
1 1 BS 14 a
2 1 4 28 b
3 1 6 42 a
4 4 BS 14 b
5 4 6 46 a
6 4 9 64 b
7 4 9 71 a
8 4 12 85 b
9 9 BS 14 a
10 9 4 28 b
11 9 6 51 a
12 9 9 66 b
13 9 12 84 <NA>
14 10 BS 0 <NA>
我想最终的结果会是这样的,
ID week outcome letter last_letter
1 1 BS 14 a a
2 1 4 28 b <NA>
3 1 6 42 a <NA>
4 4 BS 14 b b
5 4 6 46 a <NA>
6 4 9 64 b <NA>
7 4 9 71 a <NA>
8 4 12 85 b <NA>
9 9 BS 14 a b
10 9 4 28 b <NA>
11 9 6 51 a <NA>
12 9 9 66 b <NA>
13 9 12 84 <NA> <NA>
14 10 BS 0 <NA> <NA>
我已经摆弄了which.max
from the data.table
package 和 with ave
,但我还是有点卡住了。