Добавить столбец на основе значений других столбцов - PullRequest
1 голос
/ 25 апреля 2019

Честно говоря, я мог бы придумать для этого достойный титул.По сути, у меня есть dateframe:

ID Qty BasePrice Total
1   2     30      50
1   1     20      20
2   4      5      15

Для каждой строки я хочу вычислить следующее:

Result = (Qty * BasePrice) - Total

Что, предположительно, легко сделать в R. Однако я хочусгруппировать результаты по ID (суммировать их).

Пример вывода:

ID Qty BasePrice Total Results
1   2     30      50     10
1   1     20      20     10
2   4      5      15     5

Например, для ID=1 значения представляют ((2*30)-50)+((1*20)-20)

Любая идея о том, как я могу достичь этого?

Спасибо!

1 Ответ

1 голос
/ 25 апреля 2019

Мы можем сделать group_by sum разницы между произведением "Кол-во", "Базовая цена" и "Всего"

library(dplyr)
df1 %>% 
    group_by(ID) %>% 
    mutate(Result = sum((Qty * BasePrice) - Total))
# A tibble: 3 x 5
# Groups:   ID [2]
#     ID   Qty BasePrice Total Result
#  <int> <int>     <int> <int>  <int>
#1     1     2        30    50     10
#2     1     1        20    20     10
#3     2     4         5    15      5

данных

df1 <- structure(list(ID = c(1L, 1L, 2L), Qty = c(2L, 1L, 4L), BasePrice = c(30L, 
 20L, 5L), Total = c(50L, 20L, 15L)), class = "data.frame", row.names = c(NA, 
 -3L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...