Почему dplyr не дает результатов по строкам? - PullRequest
2 голосов
/ 09 мая 2020

и сумма, и + не дают результата для каждой отдельной строки

df <- data.frame(x1=c(1,1),x2=c(2,3),y1=c(NA,1),y2=c(NA,1))
df <- mutate(df, cost = prod(x1,x2,na.rm = T)+prod(y1,y2,na.rm = T),na.rm=T)

результат:

  x1 x2 y1 y2 cost
1  1  2 NA NA    7
2  1  3  1  1    7

ожидается:

  x1 x2 y1 y2 cost
1  1  2 NA NA    3
2  1  3  1  1    4

1 Ответ

2 голосов
/ 09 мая 2020

Мы можем добавить rowwise, иначе prod выполняет умножение по всему столбцу, тогда как нам нужно произведение суммы каждой строки

library(dplyr)
df %>%
    rowwise %>%
    mutate(cost = prod(x1,x2,na.rm = TRUE) + prod(y1,y2,na.rm = TRUE)) %>%
    ungroup
# A tibble: 2 x 5
#     x1    x2    y1    y2  cost
#  <dbl> <dbl> <dbl> <dbl> <dbl>
#1     1     2    NA    NA     3
#2     1     3     1     1     4
...