2015-05-08 39 views
0

我有一個看起來像一個文本文件:如何從數字轉換爲日期和時間的格式?

wd <- read.table("C:\\Users\\value.txt", sep ='' , header =TRUE) 
head(wd) # hourly values 
# Year day hour mint valu1   
# 1 2002 1 7 30  0.5  
# 2 2002 1 8 0  0.3  
# 3 2002 1 8 30  0.4  

我想增加與格式OD日期另一列是這樣的:

"2002-01-01 07:30:00 UTC" 

感謝您的幫助

+0

看到這個答案:http://stackoverflow.com/a/13022441/1715829 – Buddy

回答

1

試試這個。沒有軟件包使用:

transform(wd, 
    Date = as.POSIXct(paste(Year, day, hour, mint), format = "%Y %j %H %M", tz = "UTC") 
) 
## Year day hour mint valu1    Date 
## 1 2002 1 7 30 0.5 2002-01-01 07:30:00 
## 2 2002 1 8 0 0.3 2002-01-01 08:00:00 
## 3 2002 1 8 30 0.4 2002-01-01 08:30:00 

注:輸入是:

wd <- structure(list(Year = c(2002L, 2002L, 2002L), day = c(1L, 1L, 
1L), hour = c(7L, 8L, 8L), mint = c(30L, 0L, 30L), valu1 = c(0.5, 
0.3, 0.4)), .Names = c("Year", "day", "hour", "mint", "valu1" 
), class = "data.frame", row.names = c(NA, -3L)) 
1

你也許能夠使用像lubridate這樣的包來簡化事情,但我認爲要說明解決方案,這將對您有用。下次,如果您提供代碼來創建示例數據(如我在此處所做的那樣),則可以爲接聽人員節省時間。

d <- read.table(header=T, stringsAsFactors=F, text=" 
Year day hour mint valu1   
2002 1 7 30  0.5  
2002 1 8 0  0.3  
2002 1 8 30  0.4 
") 

require(stringr) 

d$datetime <- strptime(
    paste0(
    d$Year, "-", 
    str_pad(d$day,3,pad="0"), 
    str_pad(d$hour,2,pad="0"), 
    ":", 
    str_pad(d$mint, 2, pad="0") 
), 
    format="%Y-%j %H:%M" 
) 
+1

您可以選擇,我喜歡@G。格洛騰迪克的簡單回答。我會留下我的回答,因爲它說明了一些可以幫助其他人處理更一般字符串和日期格式的事情。 –

相關問題