Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中使用as.POSIXct格式化日期和时间_R_Posixct - Fatal编程技术网

在R中使用as.POSIXct格式化日期和时间

在R中使用as.POSIXct格式化日期和时间,r,posixct,R,Posixct,我正在尝试使用R中的as.POSIXct对文件“f845”中的日期和时间(datetime)列进行格式化。文件845在格式化之前要跳过21行,如下面第一行代码所示,它还有两列和100000行 当我试图用下面的第二行代码格式化datetime列时,我得到的输出如第三行下面的数据所示 为什么我的代码没有正确格式化日期和时间 > dat=read.table(f845,sep="\t",skip=21,col.names=c("datetime","light")) > dat$datet

我正在尝试使用R中的as.POSIXct对文件“f845”中的日期和时间(datetime)列进行格式化。文件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
编辑:
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")

初始错误可能是由于在
格式中使用
-
而不是
/

 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

dat尝试
as.POSIXct(dat$datetime,format=“%d/%m/%Y%H:%m:%S”)
您使用了
-
而不是
/
我仍然在所有行中接收到“NA”。您能否发布
dput(dat[1:10,])
的输出,而不是发布
dput()的全部结果
完全违背了这个目的。似乎您正在将日期-时间值作为可能不是您想要的因素来读取。但是尝试
droplevels(dput(dat[1:10,])
以摆脱额外的级别。对不起,我的意思是
dput(droplevels(dat[1:10,])
。这将使输出更短,以便您可以发布整个内容。发布部分
dput
从来没有帮助。请参阅
 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