将R中的公式应用于多行

时间:2018-03-31 08:08:49

标签: r dataframe

我有一个数据框可以说

a   b
1   10
2   13

我有另一个数据框,我有1个值" c"等于0.3 我想创建专栏" d"在第一个数据框中使用以下公式

1st row will be 1*10*.3
2nd row will be 2*13*.3

请注意.3很常见。

请为此建议一个R函数。

3 个答案:

答案 0 :(得分:1)

如果要按行将函数应用于数据框或矩阵,可以使用applyMARGIN参数为1.此处所需的函数为prod,或者由于您只有两列,因此可以使用*apply调用会逐行获取产品,为您提供长度为== nrow(df)的向量。您可以将该向量直接乘以0.3,为您提供值,并使用df$c<-

将其指定给新列
df$c <- apply(df, 1, prod)*0.3
df
   a  b    c
1  1  2  0.6
2 10 13 39.0

数据:

df <- data.frame(a = c(1, 10), b = c(2, 13))
df
   a  b
1  1  2
2 10 13

答案 1 :(得分:1)

使用dplyr并假设df2只包含1个名为c的列,其中1行值为0.3

require(dplyr)

df1 <- data.frame(a = c(1, 2), b = c(10, 13))
df2 <- data.frame(c = 0.3)

df1 %>%
  mutate(d = a * b * df2$c)

答案 2 :(得分:0)

另一个选项是Reduce *

df$c <- Reduce(`*`, df) * 0.3
df$c
#[1]  0.6 39.0

或者我们可以使用rowProds

中的matrixStats
library(matrixStats)
df$c <- 0.3 * rowProds(as.matrix(df))