Используйте текущее вычисленное значение из группы по сумме, чтобы вычислить другое значение в R, используя данные.таблица

#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