在R中将因子转换为时间

时间:2013-10-16 07:34:20

标签: r time

我有一个小问题,我似乎无法弄明白。我搜索了几个主题和网站以找到解决方案,我尝试了很多不同的东西,但似乎没有任何工作。
我有一个包含两列的数据集,一个用于日期,一个用于时间:

$ StartDate:日期,格式:“2013-09-01”“2013-09-01”“2013-09-01”“2013-09-01”......
 $ StartTime:因子w / 43级别“00:02:43”,“00:07:05”,..:

正如你所看到的,我已经将“StartDate”列转换为“Date”,我想将StartTime列转换为“POSIXct”..我有一个大的数据集,我分裂了,在这个大数据集中,我有变量日期和时间设置正确。我使用以下循环来分割文件:

for  (Cow in unique(df$CowID)){   #loop through each level of CowID
  df <- RawData[df$CowID == Cow,]      #extract all rows where CowID equals Cow
  write.csv(df, paste("CowID_",Cow,".csv",sep = ""),row.names = F)}    #write new dataframe to .csv

我是否应该使用额外的代码来保存变量?使用这个循环后,我得到了68个不同的.csv文件,然后我使用下一个代码分别读入R:

C292 <- read.csv(file = "C:\\...\\CowID_12292.csv",
     header = T, skip = 0, colClasses = c("StartDate" = "Date", "Date" = "Date", 
     "StartTime" = "character", "Time" = "character"))

当然,现在这些时间变量是“chr”。我不知道如何转换这个..任何人都可以帮助我吗?我尝试了 as.POSIXct(),但这似乎不起作用,我在列中只有NA ..

提前致谢!

ADD&gt; dput(头(C292))

  

结构(列表(CowID = c)(12292L,12292L,12292L,12292L,12292L,   12292L),StartDate = structure(c(15949,15949,15949,15949,   15949,15949),class =“Date”),StartTime = c(“02:16:16”,“02:16:16”,   “02:16:16”,“02:16:16”,“02:16:16”,“02:16:16”)

我真的需要在列时间中添加日期吗?或者还有一种方法可以将其排除,但仍保留变量POSIXct?我想按日期分割文件,然后在24小时的时间线上绘制日期。我不知道这是否可能,我在R中相当不错。但是,这是一个非常聪明的程序,所以我想这是可能的。只需找出办法就可以了!

1 个答案:

答案 0 :(得分:1)

您需要在时间中包含使用as.POSIXct()的日期。 试试这个:

as.POSIXct(paste(C292$StartDate, as.character(C292$StartTime)))