#r #group-by #dplyr #data.table #aggregation
#r #группа по #dplyr #data.table #агрегирование
Вопрос:
Я пытаюсь выяснить, как использовать значение, которое я только что вычислил, для вычисления желаемых результатов в таблице ниже. Я знаю, как это сделать с помощью dplyr
, но я застрял и пытаюсь изучить это во время использования data.table
.
По сути, я группирую «Страну» и суммирую их значения «Объема A» для нового столбца «Желаемые результаты», затем использую это новое значение и вычитаю его из соответствующих данных «Объема B» в их конкретной строке.
Country | Volume A | Volume B | Desired Results
Canada | 100 | 50 | 250
Canada | 200 | 150 | 150
USA | 500 | 200 | 400
France | 0 | 0 | 0
USA | 100 | 200 | 400
Комментарии:
1.Почему нет,
France
0
напримерsum(0) - 0
?2. О, извините, это должно быть 0. Я отредактирую это. Но это было потому, что я также пытался добавить условие, при котором, если сумма равна 0, то сделайте ее NA.
Ответ №1:
Мы можем использовать следующее, где NewCol
представлены желаемые результаты.
df[,NewCol:=sum(Volume.A)-Volume.B,.(Country)][]
Country Volume.A Volume.B Desired.Results NewCol
1: Canada 100 50 250 250
2: Canada 200 150 150 150
3: USA 500 200 400 400
4: France 0 0 0 0
5: USA 100 200 400 400