вдохновленный этим вопросом , мне было интересно, как вы можете пометить строку с максимальным номером по группе, сохраняя при этом все остальные строки вместо их удаления?
Допустим, я хочу искать максимум в Value
для каждого ID
отдельно. Затем отметьте максимальную строку с помощью 1
, а все остальные - с помощью 0
.
, поэтому в основном получаем от этого:
ID <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)
DF <- data.table(cbind(ID, Value, Event))
DF
ID Value Event
1: 1 2 1
2: 1 3 1
3: 1 5 2
4: 2 2 1
5: 2 5 2
6: 2 8 1
7: 2 17 2
8: 3 3 2
9: 3 5 2
до этого:
DF
ID Value Event flagMAX
1: 1 2 1 0
2: 1 3 1 0
3: 1 5 2 1
4: 2 2 1 0
5: 2 5 2 0
6: 2 8 1 1
7: 2 17 2 1
8: 3 3 2 0
9: 3 5 2 0
как это можно сделать? в идеале с data.table
я пробовал:
DF[,flagMAX := ifelse(max(Value), 1, 0), by = "ID"]
, но получил все 1
любые идеи?