我有数据

library(dplyr, warn.conflicts = FALSE)
mtcars %>% 
  as_tibble() %>% 
  select(mpg, qsec) %>% 
  head(5) %>% 
  mutate(new_col = c(10, rep(NA, times = nrow(.)-1))) 
#> # A tibble: 5 × 3
#>     mpg  qsec new_col
#>   <dbl> <dbl>   <dbl>
#> 1  21    16.5      10
#> 2  21    17.0      NA
#> 3  22.8  18.6      NA
#> 4  21.4  19.4      NA
#> 5  18.7  17.0      NA

我需要一个new_col的解,比如mpg + qsec - lag(new_col),但需要递归

预期输出:

#> # A tibble: 5 × 3
#>     mpg  qsec new_col
#>   <dbl> <dbl>   <dbl>
#> 1  21    16.5    10  
#> 2  21    17.0    28  
#> 3  22.8  18.6    13.4
#> 4  21.4  19.4    27.4
#> 5  18.7  17.0     8.3

推荐答案

您可以使用purrr::accumulate()(或base::Reduce(),如果您愿意):

library(dplyr)
library(purrr)

mtcars %>% 
  as_tibble() %>% 
  select(mpg, qsec) %>% 
  head(5) %>% 
  mutate(new_col = accumulate(tail(mpg + qsec, -1), .f = ~ .y - .x, .init = 10))

# A tibble: 5 × 3
    mpg  qsec new_col
  <dbl> <dbl>   <dbl>
1  21    16.5   10   
2  21    17.0   28.0 
3  22.8  18.6   13.4 
4  21.4  19.4   27.4 
5  18.7  17.0    8.27

R相关问答推荐

如何识别组内的行是否在同一列中具有值?

R绑定具有不同时间观察的两个数据帧

如何在列表的子元素上使用setName

将收件箱变量传递给ggplot 2函数

如何从其他前面列中减go 特定列的平均值?

根据列表中项目的名称多次合并数据框和列表

R Markdown中的交叉引用表

R中的子集文件—读取文件名索引为4位数字序列,例如0001到4000,而不是1到4000)

基于多列将值链接到NA

如何优化向量的以下条件赋值?

如何在ggplot图中找到第二轴的比例

多个过滤器内的一个盒子在仪表板Quarto

在嵌套列表中查找元素路径的最佳方法

如何删除仅在数据集顶部和底部包含零的行

Geom_arcbar()中出错:找不到函数";geom_arcbar";

优化从每个面的栅格中提取值

如何预测原始数据集并将值添加到原始数据集中

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

是否从列中删除★符号?

每行不同列上的行求和