R:更正R中日期的年份
问题描述:
我有一个包含观察数据的框架以及它们的制作日期。日期是从csv文件中读取的,但只包括月份和日期。 R假设他们都是从2016年开始的。我知道日期从大多数到最近都是按顺序排列的,那么我如何才能在正确的年份添加?R:更正R中日期的年份
输入按从大到小的顺序排列。
Input Output
1/1 1/1/2016
12/1 12/1/2015
11/1 11/1/2015
1/1 1/1/2015
12/1 12/1/2014
1/1 1/1/2014
12/1 12/1/2013
谢谢你的时间!
答
如果数据按照OP的帖子中显示的顺序排列,我们可以使用sub
从最初的vector
('v1')中提取月份部分,转换为数字,得到相邻元素的差异,检查它是否更大比0,cumsum
逻辑vector
,使用该分组索引来传递年份值,最后是paste
它与初始向量。
v2 <- paste(v1, c(2016:2013)[cumsum(c(TRUE,
diff(as.numeric(sub("/.*", "", v1))) > 0))], sep="/")
如果我们需要转换为“日期”类,使用as.Date
用正确的format
。
as.Date(v2, "%m/%d/%Y")
#[1] "2016-01-01" "2015-12-01" "2015-11-01" "2015-01-01" "2014-12-01"
#[6] "2014-01-01" "2013-12-01"
你想在2015年只更改'12/03'吗? – akrun
嗨,akrun,还有更多的日期。我只是想解释一下自己。谢谢!我可以从12/03到1/01然后到11/11和11/11应该在2014 – jw123456
在那种情况下,解释不清楚 – akrun