Как выполнить сумму, если выборка не возвращает элемента в R? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть if цикл по нескольким data.frame -ам.Я размещаю данные на основе одной из переменных и sum записи на основе другой переменной.Моя проблема в том, что выбор иногда возвращает нулевой элемент tibble, поэтому функция sum выдает ошибку.Есть ли элегантный способ заставить функцию sum выполнить эти случаи и считать пустой tibble нулем?Он хорошо работает с data.frame, но не с tibble.Я уверен, что должно быть решение с tibble.

#tibble
data<- tibble:: tibble("A" = c(1, 1, 2), "B"= c(2, 2, 1), "C"= c(10, 20, 30)) 
good<- data[data$A == 1,]
sum(good[good$B == "1",'C'])

#data.frame
data<- data.frame ("A" = c(1, 1, 2), "B"= c(2, 2, 1), "C"= c(10, 20, 30))
good<- data[data$A == 1,]
sum(good[good$B == "1",'C'])

1 Ответ

0 голосов
/ 19 марта 2019

Используя data.table

library(data.table)
setDT(data)[, .(C = sum(C)), .(A, B)]

, если нам нужно сравнение

setDT(data)[A== 1 & B == 1, .(total = sum(C))]
...