calculate row sum and product in data.frame
apply, dataframe, r
Solution
Try
transform(df, sum=rowSums(df), prod=x*y*z)
# x y z sum prod
#1 1 2 3 6 6
#2 2 3 4 9 24
#3 5 1 2 8 10
Or
transform(df, sum=rowSums(df), prod=Reduce(`*`, df))
# x y z sum prod
#1 1 2 3 6 6
#2 2 3 4 9 24
#3 5 1 2 8 10
Another option would be to use `rowProds` from `matrixStats`
library(matrixStats)
transform(df, sum=rowSums(df), prod=rowProds(as.matrix(df)))
If you are using `apply`
df[,c('sum', 'prod')] <- t(apply(df, 1, FUN=function(x) c(sum(x), prod(x))))
df
# x y z sum prod
#1 1 2 3 6 6
#2 2 3 4 9 24
#3 5 1 2 8 10
Problem
I would like to append a columns to my data.frame in R that contain row sums and products Consider following data frame ``` x y z 1 2 3 2 3 4 5 1 2 ``` I want to get the following ``` x y z sum prod 1 2 3 6 6 2 3 4 9 24 5 1 2 8 10 ``` I have tried ``` sum = apply(ages,1,add) ``` but it gives me a row vector. Can some one please show me an efficient command to sum and product and append them to original data frame as shown above?