为什么dplyr无法生成逐行结果?
sum和+都无法给出每一行的结果为什么dplyr无法生成逐行结果?,r,dplyr,sum,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 3 2 1 3 1 1 4 我们可以按行添加prod,否则prod对整列进行乘法,
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 3
2 1 3 1 1 4
我们可以按行添加
prod
,否则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
库(dplyr)
df%>%
行%>%
突变(成本=产品(x1,x2,na.rm=TRUE)+产品(y1,y2,na.rm=TRUE))%>%
解组
#一个tibble:2x5
#x1 x2 y1 y2成本
#
#1 1 2 NA 3
#2 1 3 1 1 4
prod
用于将向量的所有元素相乘。如果要逐元素乘法,只需使用标准的*
。唯一的区别是AFAICT,您应该用1
替换NA
值,然后只定义cost=x1*x2+y1*y2
。
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