我想在 R 中的 data.frame 中附加一列,其中包含行总和和乘积
考虑以下数据框
x y z
1 2 3
2 3 4
5 1 2
我想得到以下
x y z sum prod
1 2 3 6 6
2 3 4 9 24
5 1 2 8 10
我试过了
sum = apply(ages,1,add)
但它给了我一个行向量。有人可以告诉我一个有效的命令来求和和乘积并将它们附加到原始数据框中,如上所示?
最佳答案
试试
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
或者
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
另一种选择是使用
rowProds
来自 matrixStats
library(matrixStats)
transform(df, sum=rowSums(df), prod=rowProds(as.matrix(df)))
如果您正在使用
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
关于r - 计算 data.frame 中的行和和乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103031/