Предположим, что у меня есть data.table следующим образом -:Использование .N и .sd в одном вызове
data = data.table(c("a","a","b","b","c"),c(1,2,3,4,5))
Я хотел бы подвести числовой вектор, только тогда, когда вектор фактор имеет более чем один вход , У меня есть проблема с использованием .SD. Я понимаю, что я мог бы создать поле N с помощью
data[ , N := .N, by = V1]
, а затем просуммировать по
data[N > 1, lapply(.SD,sum), by = V1, .SDcols = 2]
Однако, есть один шаг вызова, чтобы сделать это?
Реферирование .sd в вызове не возвращает ответ -
data[, lapply(.SD[which(length(.SD)>1)],sum), by = V1, .SDcols = 2]
Я хотел бы понять, почему это не работает. Не имеет значения: -
data[, lapply(.SD[which(.N>1)],sum), by = V1, .SDcols = 2]
Спасибо!
Как насчет 'data [, if (.N> 1) lapply (.SD, sum), by = V1]'? – Arun