Я хочу суммировать все столбцы, кроме одного указанного c столбца, на основе условия по группам.
Например:
Col1 Col2 Condition Name P1 P2 P3 P4
1990 1 0 APPLE 10 20 20 30
1990 1 1 BAN 30 40 50 50
1990 1 1 CAR 40 40 30 40
1990 2 0 DOG 100 20 30 40
1990 2 1 APPLE 10 20 20 30
1990 2 1 APPLE 50 20 20 30
Я хочу СУММА P2
, P3
, P4
, а затем APPEND P1
когда Condition
равно "0"
на Col1
и Col2
.
Таким образом, результат будет:
Col1 Col2 Condition P1 P2 P3 P4
1990 1 0 10 100 100 120
1990 2 0 100 60 70 100
Я знаю, как добавить в data.table
, но понятия не имею с этим.
DT[, .(lapply(.SD, sum, na.rm=TRUE), by=.(Col1, Col2), .SDcols=c("P2", "P3", "P4")]
Кажется, что DT[, setdiff(names(DT), c("P2", "P3", "P4")), with = FALSE]
является ключом, но все еще не имеет представления.