r - 根据 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
解决方案
您可以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)
推荐阅读
- testing - 如何在运行测试之前检查视口
- c - 如果 C 标准库实际上正在测试中,为什么 C 编译器验证套件本身可能会使用 C 标准库?
- servicenow - 如何在 Orlando 实例中的服务虚拟代理流中包含附件,同时通过虚拟代理创建事件
- gitlab - GitLab 上的管道问题
- mysql - 在 M:N 关联中有一个复合键 使用复合键而不是主键
- docker - 如何正确使用“外部”JS 模块来完成 PhpStorm?
- javascript - 如何为 select2 列表的每个项目创建一个按钮?
- mongodb - 为什么不能在副本设置中的 .hint() 中使用复合索引?
- python - 有什么方法可以从 csv 获取 DataFrame 的某些部分?
- visual-studio - NUnit 异步任务失败“方法具有非 void 返回值,但预期没有结果”