Я группирую таблицу data.table и хочу выбрать из каждой группы первую строку, где x == 1, или, если такая строка не существует, тогда первая строка с любым значением в x
d <- data.table(
a = c(1,1,1, 2,2, 3,3),
x = c(0,1,0, 0,0, 1,1),
y = c(1,2,3, 1,2, 1,2)
)
эта попытка
d[, ifelse(any(.SD[,x] == 1),.SD[x == 1][1], .SD[1]), by = a]
возвращает
a V1
1: 1 1
2: 2 0
3: 3 1
но я ожидал
a x y
1: 1 1 2
2: 2 0 1
3: 3 1 1
Любые идеи, как правильно это сделать?