如何从数字转换为日期和时间的格式?

时间:2015-05-08 16:43:46

标签: r

我有一个文本文件,如下所示:

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 date的列,如下所示:

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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以使用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" ) 之类的软件包来简化操作,但我想说明一下这对您有用的解决方案。如果你提供代码来创建像我在这里完成的样本数据,那么下次它可以为人们回答节省时间。

func FindUserInfo(id string) (Info, bool) {
    it, present := all[id]
    return it, present
}

答案 1 :(得分: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))