我原始Excel文件中的日期代表格式爲「Jan-01」的月度數據。當然,我可以手動將它們轉換爲Excel中更有用的東西,然後將其輸入到R.將mm-yy字符串「Jan-01」轉換爲日期格式R
如何將這樣的adate轉換爲R中的Date類?
我原始Excel文件中的日期代表格式爲「Jan-01」的月度數據。當然,我可以手動將它們轉換爲Excel中更有用的東西,然後將其輸入到R.將mm-yy字符串「Jan-01」轉換爲日期格式R
如何將這樣的adate轉換爲R中的Date類?
編輯:
最簡單的方法是使用yearmon類動物園:
require(zoo)
as.yearmon(x, "%b-%y")
#[1] "Jan 2001"
稍長方法:
x="Jan-01"
xs<-strsplit(x, "-")
xd <- as.Date(xs[[1]][2], paste(xs[[1]][1], "01", sep="-"), format="%y-%b-%d")
xd
#[1] "2001-01-01"
如果你想處理日期的字符串,那麼你可能需要使用sapply
,如果選擇第二種方法來製作一個年的矢量和一個月的矢量
請參閱標題,它是月份和年份,不是月份和日期。 > xd < - as.Date(paste(xs [[1]] [1],xs [[1]] [2],sep =「 - 」),format =「%b-%y」)012d> xd (paste(xs [[1]] [1],xs [[1]] [2],sep =「 - 」),format =「%b-% Y「) > xd [1] NA > xd < - as.Date(paste(xs [[1]] [1],xs [[1]] [2],sep =」 - 「) =「d% - %b-%Y」) > xd [1]不適用 – Fred
好的,很容易修復。兩位數年份的格式規範是%y而不是%Y –
如果強行指定月份的第一天,你可以將日期轉換爲這樣:
datevar <- c("Jan-01","Feb-01","Mar-12")
as.Date(paste("01",datevar,sep="-"),"%d-%b-%y")
應當指出的是,這在本質上是相同的答案迪文有如下,只是手動指定日,而不是那一年。
如果你想有一個date
類,使用as.Date:
x <- "Jan-01"
as.Date(paste("01-", x, sep = ""), format = "%d-%b-%y")
如果你想有一個POSIXct
類,可以考慮使用lubridate
:
library(lubridate)
x <- "Jan-01"
dmy(paste("01-", x , sep =""))
如果你想僅僅依靠base
:
x <- "Jan-01"
as.POSIXct(paste("01-", x, sep = ""), format = "%d-%b-%y")
正如OP所述,您的第一個'as.Date'會給出一個「NA」結果,因爲R無法猜測整個日期。 – thelatemail
oops blooper。粘貼錯誤的代碼。編輯。 – JackeJR
正如標題中提到的那樣,它是月份和年份,而不是月份和日期。 strptime(「Jan-01」,「%b-%d」)[1]「2012-01-01」> strptime(「Jan-01」,「%b-%y」)[1] NA – Fred
添加1代表月份的第一天:'datevar < - 「Jan-01」; as.Date(paste(「01」,datevar,sep =「 - 」),「%d-%b-%y」);' – thelatemail