我想创建一个新列,为其赋予初始值 G ,后跟 2 * G < / strong>。
我认为 dplyr 软件包是适当的。
mutate (df, newcol = )
在 MS Excel 中,对于 B列,它类似于* G ,B2 * sqrt(2),B3 * sqrt(2)等*。现在,我要在 R 中进行操作。任何帮助/评论表示赞赏。
答案 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