Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:更正R中日期的年份_R_Date - Fatal编程技术网

R:更正R中日期的年份

R:更正R中日期的年份,r,date,R,Date,我有一个数据框,上面有观察结果和它们产生的日期。日期是从csv文件读取的,但仅包括月份和日期。R假设它们都是从2016年开始的。我知道日期是从最近到最近的顺序,那么我该如何添加正确的年份呢 输入按从最新到最新的顺序排列 Input Output 1/1 1/1/2016 12/1 12/1/2015 11/1 11/1/2015 1/1 1/1/2015 12/1

我有一个数据框,上面有观察结果和它们产生的日期。日期是从csv文件读取的,但仅包括月份和日期。R假设它们都是从2016年开始的。我知道日期是从最近到最近的顺序,那么我该如何添加正确的年份呢

输入按从最新到最新的顺序排列

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
从初始
向量('v1')中提取月份部分,转换为数字,获取相邻元素的差值,检查其是否大于0,
cumsum
逻辑
向量
,使用该分组索引传递年份值,最后将其与初始向量一起粘贴

v2 <- paste(v1, c(2016:2013)[cumsum(c(TRUE,
          diff(as.numeric(sub("/.*", "", v1))) > 0))], sep="/")

您想在2015年仅更改
12/03
吗?嗨,akrun,还有更多的日期。我只是想解释一下我自己。谢谢我可以从2003年12月到2001年1月,然后到11月11日,11月11日应该在2014年。在这种情况下,解释不清楚。如果你展示一系列日期,并且预期的输出效果很好,那会更好!非常感谢。如果日期需要超过2013年,将2013年更改为2010年是否有效?@jw123456是的,您可以使用2016:1800左右,它将只接受基于数字索引的值谢谢您的帮助!
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"