首页 > 解决方案 > 根据 R 中的 id 和 year 列创建增量列 year

问题描述

我有以下数据框,我想使用某种 seq() 函数创建“create_col”,我猜想使用“年份”列作为序列的开始。我怎么能那样做?

id <- c(1,1,2,3,3,3,4)
year <- c(2013, 2013, 2015,2017,2017,2017,2011)
create_col <- c(2013,2014,2015,2017,2018,2019,2011)

Ideal result:

  id year create_col
1  1 2013       2013
2  1 2013       2014
3  2 2015       2015
4  3 2017       2017
5  3 2017       2018
6  3 2017       2019
7  4 2011       2011


标签: rdplyr

解决方案


您可以row_number()在每个中添加最小年份id

library(dplyr)

df %>%
  group_by(id) %>%
  mutate(create_col = min(year) + row_number() - 1)

#    id  year create_col
#  <dbl> <dbl>      <dbl>
#1     1  2013       2013
#2     1  2013       2014
#3     2  2015       2015
#4     3  2017       2017
#5     3  2017       2018
#6     3  2017       2019
#7     4  2011       2011

数据

df <- data.frame(id, year)

推荐阅读