我有以下几点:在R中改变日期时间对象的年份?
"0014-06-30"
,我想将它更改为:
"0000-06-30"
我将如何做到这一点的R'
我正在阅读的所有内容都非常专注于将字符串转换为日期,而不是更改日期内的元素。
我有以下几点:在R中改变日期时间对象的年份?
"0014-06-30"
,我想将它更改为:
"0000-06-30"
我将如何做到这一点的R'
我正在阅读的所有内容都非常专注于将字符串转换为日期,而不是更改日期内的元素。
> x <- as.Date('0014-06-30')
> x
[1] "0014-06-30"
> library(lubridate)
> year(x)
[1] 14
> year(x) <- 0
> x
[1] "0000-06-30"
我无法通过转换为as.Date
来获得特定的格式。一个regex
选择是
str1 <- "0014-06-30"
as.Date(str1)
#[1] "14-06-30"
sub('\\d{2}(?=-)', '00', str1, perl=TRUE)
#[1] "0000-06-30"
我会提供以下功能来解决两个四位数日期的混合载体(如您已已经格式化字符串为日期,如果开头的字符串):
library(lubridate)
two_dig_year_cnvt <- function(z, year=2017){
y <- as.numeric(format(z, '%Y'))
range <- 2017 - 2000
year(z) <- ifelse(y >= 0 & y <= range, 2000 + y,
ifelse(y > range & y <= 200, 1900 + y, y))
z
}
这说明00-16两位数年份,假设2000年是预定的世纪,17 - 200年假定世纪是1900年。否则,返回原来的一年。如果你正在处理19世纪的日期,那么当然这种方法是不可行的。
我得到'x < - as.Date('0014-06-30'); x#[1]“14-06-30”' – akrun 2014-12-04 05:41:50
@akrun有趣......我刚刚从新鲜的R会话中验证了我的输出。不知道有什么区别。 – Gregor 2014-12-04 05:44:39
我也尝试过新鲜的控制台。没有不同。无论如何,加上一个方法 – akrun 2014-12-04 07:02:38