2016-11-28 64 views
0

我在R中有一個時間序列,我希望與之合作,從01-01-52到01-01-88。 (1952年至1988年)。 37個觀察。在r中更改時間序列的原點

然而,當我在R中讀它,我遇到從52年1月1日到68年1月1日的觀察被解釋爲是在2052等,而不是該問題1952

我如何強迫R讀取所有數據,從1952年到1988年?

鏈接到我的數據:https://www.dropbox.com/s/93foyc238skt3xj/AgricIndus.csv?dl=0

這是我使用的代碼。你知道我需要用我的代碼來使它正確讀取嗎?

agri <- read.table("AgricIndus.csv", 
        sep = ",", header = TRUE, skip = 0, 
        stringsAsFactors = FALSE) 


agri$time <- as.Date(agri$time, "%m-%d-%y") 

agri.xts <- xts(agri[, 2:3], order.by = agri$time) 

回答

0

如果你能確保你的時間序列是有規律的,則它可能是最容易產生像這樣正規日期序列:

agri$time <- seq.Date(as.Date("1952-01-01"),as.Date("1988-01-01"),by='years’) 

另一種簡單的解決方案,爲不規則的時間序列的工作,以及將52 format = %m-%d-%Y讀你的數據年88(大寫「Y」!),並加上1900年:

df$time <- as.POSIXlt(as.Date(df$time,format = '%m-%d-%Y')) 
df$time$year <-df$time$year + 1900 
df$time <- as.Date(df$time) 
df$time 
[1] "1952-01-01" "1953-01-01" "1954-01-01" "1955-01-01" 
[5] "1956-01-01" "1957-01-01" "1958-01-01" "1959-01-01" 
[9] "1960-01-01" "1961-01-01" "1962-01-01" "1963-01-01" 
[13] "1964-01-01" "1965-01-01" "1966-01-01" "1967-01-01" 
[17] "1968-01-01" "1969-01-01" "1970-01-01" "1971-01-01" 
[21] "1972-01-01" "1973-01-01" "1974-01-01" "1975-01-01" 
[25] "1976-01-01" "1977-01-01" "1978-01-01" "1979-01-01" 
[29] "1980-01-01" "1981-01-01" "1982-01-01" "1983-01-01" 
[33] "1984-01-01" "1985-01-01" "1986-01-01" "1987-01-01" 
[37] "1988-01-01" 
+0

謝謝!這正是我期待的! – fwintherdk

1

的一種方式(黑客)可以是以下:

agri$time <- as.Date(paste0(substring(agri$time,1,6), '19', substring(agri$time,7,8)), 
                      "%m-%d-%Y") 
agri$time 
# [1] "01-01-52" "01-01-53" "01-01-54" "01-01-55" "01-01-56" "01-01-57" "01-01-58" "01-01-59" "01-01-60" "01-01-61" "01-01-62" "01-01-63" "01-01-64" "01-01-65" 
# [15] "01-01-66" "01-01-67" "01-01-68" "01-01-69" "01-01-70" "01-01-71" "01-01-72" "01-01-73" "01-01-74" "01-01-75" "01-01-76" "01-01-77" "01-01-78" "01-01-79" 
# [29] "01-01-80" "01-01-81" "01-01-82" "01-01-83" "01-01-84" "01-01-85" "01-01-86" "01-01-87" "01-01-88" 
+0

我打算用'agri $ time < - sub(「([[:digit:]] {2})$」,「19 \\ 1」,agri $ time)'approach ,但這個基本上是一樣的東西 –