我有以下幾點:在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