縦断的なデータ セット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
からと をいじりましたが、まだちょっと行き詰まっています。data.table
ave