r - 为什么 dplyr 无法按行生成结果?

标签 r dplyr sum

sum 和 + 都无法给出每一行的结果

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

最佳答案

我们可以添加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

关于r - 为什么 dplyr 无法按行生成结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61698481/

相关文章:

mysql - RODBC 和 MYSQL 过程参数

Matlab:如何根据其他列中的条目对特定范围内的值求和

php - 如何在php mysql中减去两个表

R:添加到现有表达式()

r - 在 write 函数中 append 文本 [R]

r - 删除带有多个零的列

r - 如何使用 purrr 匹配查找表中的记录?

r - 在mutate_at中使用case_when

r - 使用 dplyr 和 tidyr 计算小计

在一系列重叠间隔中找到最大和的算法