R:根据另一列中的数据生成顺序列

时间:2019-10-09 14:52:36

标签: r dataframe dplyr key sequence

我有一个数据框“ my_data”,如下所示:

Calendar_Day      Name    
2018-03-31        ABC    
2018-03-31        XYZ  
2018-03-31        OPR
2019-01-31        ABC    
2019-01-31        RTE    
2019-10-31        YUD    
2018-03-31        RYT

我希望有另一列将用作具有格式的主键

YEAR+MONTH+6digit sequence  , eg: 201803000001

我是R的新手,找不到实现该概念的方法。

和数据框应类似于

Calendar_Day      Name    ID
2018-03-31        ABC     201803000001
2018-03-31        XYZ     201803000002
2018-03-31        OPR     201803000003
2019-01-31        ABC     201901000001
2019-01-31        RTE     201901000002
2019-10-31        YUD     201910000001
2018-03-31        RYT     201803000004

2 个答案:

答案 0 :(得分:2)

void

答案 1 :(得分:1)

您可以像这样使用tidyverse软件包:

library(tidyverse)

mydata  %>%
  mutate(Date2 = format(Date, "%Y%m")) %>%
  group_by(Date2) %>%
  mutate(ID = paste0(Date2, str_pad(1:n(), width = 6, side = "left",  pad = "0"))) %>%
  ungroup() %>%
  select(-Date2)

主要思想是使用format函数:format(mydate, %Y)返回日期对象的年份,而format(mydate, %m)返回日期对象的月份。 我将这两个粘贴在一起并添加六位数字序列。 我使用string_pad向序列添加前导零。