r - 计算 data.frame 中的行和和乘积

标签 r dataframe apply

我想在 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/

相关文章:

r - 更改从在浏览器中打开的 Shiny 应用程序下载的绘图文件的文件名

r - 如果您正在编写的函数也有可选参数,您如何使用 tidydots(...)?

r - 更改ggplot中的线宽,而不是大小

python 创建具有可变行元素的二维数组/数据框

r - 如何保存 data.frame-to-model.matrix 的映射并应用于新的观察?

python - Groupby,转换 - 恢复到原始表

r - 使用 rvest,是否可以单击激活 div 并显示新内容以进行抓取的选项卡

来自包含字典的字典的 Python Pandas 数据框

r - R 中意外的应用函数行为

r - 让 match.call() 与 *apply 和 plyr 一起工作? (重新 : Referencing a dataframe recursively)