[英]How to convert numeric numbers into a normal date?
我有一個netcdf
文件從中提取一些變量。 提供者告訴我,時間變量(A)是自1900-01-01 00:00:0.0
以來的小時數。 我需要將此變量轉換為正常日期並寫入另一個txt文件。
f1 <- open.ncdf("C:\\Users\\data.nc")
# [1] "file C:\\Users\\data.nc has 3 dimensions:"
# [1] "longitude Size: 2"
# [1] "latitude Size: 2"
# [1] "time Size: 2920"
# [1] "file C:\\Users\\data.nc has 5 variables:"
# [1] "short stm[longitude,latitude,time] Longname:soil textre Missval:-32767"
時間:
A <- get.var.ncdf(nc=f1,varid="time")
head(A)
## [1] 990552 990558 990564 990570 990576 990582
另一個變量:
B1 <- get.var.ncdf(nc=f,varid="stm")
write.table(t(rbind(A,B1)),file="output.txt")
在寫入文本輸出文件之前,我需要您的幫助將時間變量轉換為正常日期。
日期
如果A
是"1900-01-01"
以來的小時數,則將它們除以24,並將此日期傳遞給as.Date
函數中的origin
參數,如
A <- c(990552, 990558, 990564, 990570, 990576, 990582)
as.Date(A/24, origin = "1900-01-01")
## [1] "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-02" "2013-01-02"
日期+時間
如果你也想要小時,請改用as.POSIXct
並乘以3600(你應該在tz
參數內指定你的時區)
as.POSIXct(A*3600, origin = "1900-01-01")
## [1] "2013-01-01 02:00:00 IST" "2013-01-01 08:00:00 IST" "2013-01-01 14:00:00 IST" "2013-01-01 20:00:00 IST" "2013-01-02 02:00:00 IST" "2013-01-02 08:00:00 IST"
時區
為了知道您的時區,請輸入
Sys.timezone()
有關可能時區的完整列表,請鍵入
OlsonNames()
添加/刪除小時數
無論哪種方式,您都可以通過將小時數乘以3600
並在結果中添加/刪除來刪除/添加小時數,例如
as.POSIXct(A*3600, origin = "1900-01-01") - 2*3600
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.