[英]Formatting dates and times with as.POSIXct in R
我正在嘗試使用R中的as.POSIXct從文件“ f845”格式化日期和時間(日期時間)列。文件845在格式化之前有21行要跳過,如下面的第一行代碼所示,它還具有兩列和100000行。
當我嘗試使用下面的第二行代碼格式化datetime列時,最終得到輸出,如第三行下面的數據所示。
為什么我的代碼無法正確格式化日期和時間?
> dat=read.table(f845,sep="\t",skip=21,col.names=c("datetime","light"))
> dat$datetime=as.POSIXct(strptime(dat$datetime,format="%d-%m-%Y %H:%M:%S", tz="UTC"))
> dat[1:10,]
datetime time
1 <NA> 4.542
2 <NA> 7.949
3 <NA> 5.678
4 <NA> 7.949
5 <NA> 7.949
6 <NA> 6.813
7 <NA> 2.271
8 <NA> 2.271
9 <NA> 2.271
10 <NA> 2.271
格式化之前,數據如下所示:
> dat=read.table(f845,sep="\t",skip=21,col.names=c("datetime","light"))
> dat[1:10,]
datetime light
1 21/05/2013 22:56:07 4.542
2 21/05/2013 23:01:07 7.949
3 21/05/2013 23:06:07 5.678
4 21/05/2013 23:11:07 7.949
5 21/05/2013 23:16:07 7.949
6 21/05/2013 23:21:07 6.813
7 21/05/2013 23:26:07 2.271
8 21/05/2013 23:31:07 2.271
9 21/05/2013 23:36:07 2.271
10 21/05/2013 23:41:07 2.271
編輯: dput(droplevels (dput(dat[1:10,]))
的輸出如下所示,仍然有大量的日期,所以我只顯示最后幾行:
> dput(droplevels(dat[1:10,]))
structure(list(datetime = structure(1:10, .Label = c("21/05/2013 22:56:07",
"21/05/2013 23:01:07", "21/05/2013 23:06:07", "21/05/2013 23:11:07",
"21/05/2013 23:16:07", "21/05/2013 23:21:07", "21/05/2013 23:26:07",
"21/05/2013 23:31:07", "21/05/2013 23:36:07", "21/05/2013 23:41:07"
), class = "factor"), light = c(4.542, 7.949, 5.678, 7.949, 7.949,
6.813, 2.271, 2.271, 2.271, 2.271)), .Names = c("datetime", "light"
), row.names = c(NA, 10L), class = "data.frame")
最初的錯誤可能是由於使用-
而不是/
format
。
dat <- read.table("D845.lux",sep="\t",skip=21,
col.names=c("datetime","light"), stringsAsFactors=FALSE)
dim(dat)
#[1] 100247 2
Datetime <- as.POSIXct(dat$datetime, format="%d/%m/%Y %H:%M:%S")
head(Datetime)
#[1] "2013-05-21 22:56:07 EDT" "2013-05-21 23:01:07 EDT"
#[3] "2013-05-21 23:06:07 EDT" "2013-05-21 23:11:07 EDT"
#[5] "2013-05-21 23:16:07 EDT" "2013-05-21 23:21:07 EDT"
any(is.na(Datetime))
#[1] FALSE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.