我有一个数据框“ 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
答案 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
向序列添加前导零。