2014-10-17 4 views
1

Я пытаюсь отформатировать столбец дат и времени (datetime) из моего файла «f845», используя as.POSIXct в R. Файл 845 имеет 21 строку для пропусков перед форматированием как видно из первой строки кода ниже, он также имеет два столбца и 100000 строк.Форматирование дат и времени с as.POSIXct в R

Когда я пытаюсь отформатировать столбец 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 

Edit: выход 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") 
+3

Попытка 'as.POSIXct (DAT $ DateTime, формат = "% d /% м /% Y% H:% M:% S")' 'Вы использовали -' вместо'/' – akrun

+0

Я я все еще получаю «NA» во всех строках. – JC11

+1

Не могли бы вы вывести вывод 'dput (dat [1:10,])' – akrun

ответ

1

исходная ошибка может быть связана с использованием - вместо / в 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 
Смежные вопросы