创建具有给定初始值的新列

时间:2019-06-25 10:27:03

标签: r dplyr

我想创建一个新列,为其赋予初始值 G ,后跟 2 * G < / strong>。

我认为 dplyr 软件包适当的

mutate (df, newcol = ) 

MS Excel 中,对于 B列,它类似于* G ,B2 * sqrt(2),B3 * sqrt(2)等*。现在,我要在 R 中进行操作。任何帮助/评论表示赞赏。

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找累积产品

df$b <- cumprod(df$b)

# a        b
#1 a 1.414214
#2 b 2.000000
#3 c 2.828427
#4 d 4.000000
#5 e 5.656854

或者,如果您想做更复杂的事情,请在自定义函数中使用Reduce

Reduce(`*`, df$b, accumulate = TRUE)
#[1] 1.414214 2.000000 2.828427 4.000000 5.656854

数据

df <- data.frame(a = letters[1:5])
df$b <- sqrt(2)

答案 1 :(得分:1)

您只需要指定列和要应用的公式的逻辑即可:

data<- data.frame(Col1 = 1:10)
data %>% mutate(Col2 = sqrt(2)**Col1)
      Col1      Col2
1     1  1.414214
2     2  2.000000
3     3  2.828427
4     4  4.000000
5     5  5.656854
6     6  8.000000
7     7 11.313708
8     8 16.000000
9     9 22.627417
10   10 32.000000

按照@Ronak逻辑,您还可以执行cumprod(),如下所示:

data<- data.frame(Col1 = rep(sqrt(2),10))
data %>% mutate(Col2 = cumprod(Col1))
       Col1      Col2
1  1.414214  1.414214
2  1.414214  2.000000
3  1.414214  2.828427
4  1.414214  4.000000
5  1.414214  5.656854
6  1.414214  8.000000
7  1.414214 11.313708
8  1.414214 16.000000
9  1.414214 22.627417
10 1.414214 32.000000