2015-02-23 3 views
0

Я работаю с данными из файлов csv, которые будут выглядеть одинаково, поэтому я надеюсь придумать код, который можно легко применить ко всем из них. Однако, к сожалению, я не могу выполнить первый шаг :-(.Создайте вектор времени из импорта excel

Файлы csv имеют дату и время, сохраненные в одном столбце, поэтому, когда я импортирую их с read.csv, этот столбец читается как chr. можно наиболее легко преобразовать это в дату, когда я затем можно использовать для построения и анализа

Вот что я пытался:

нагрузки данные -> сохранит дату и время как CHR под MyData $ Date.Time (например, 1/1/15 0:00)

mydata<-read.csv(file.choose(), stringsAsFactors = FALSE, 
       strip.white = TRUE, 
       na.strings = c("NA",""), skip=16, 
       header=TRUE) 

отделения Date.Time в Дата и время:

new <- do.call(rbind , strsplit(as.character(mydata$Date.Time) , " ")) 

добавить эти два назад к ф.р. MyData:

cbind(mydata , Date = new[,2] , Time = new[,1]) 

новообращенного Дата в формате даты через as.Date:

MyData $ Дата < - as.Date (new [, 1], format = "")

Так что это отлично работает на дату, однако я застрял со временем, я пробовал это:

mydata$Time <- format(as.POSIXct(new[,2], format="%H:%M")) 

это дает мне следующую ошибку:

Ошибка в as.POSIXlt.character (х, TZ, ...): символьная строка не в стандартном формате однозначного

Интересно, если есть более умный способ сделать это? Чтение во времени и дате, кажется, является одной из существенных задач, которые я хотел бы понять. Есть ли способ R, непосредственно распознающий дату и время csv? Или, как правило, умнее генерировать вектор времени самостоятельно, если да, то как бы я это сделал?

Большое спасибо за помощь. Sandra

ответ

1

Если вы хотите использовать только время рассмотреть вопрос об использовании chron пакета:

library(chron) 
mytime <- times("21:19:37") 

или в случае

times(new[,2]) 

при условии, что это векторный характер.

0

Я попробовал Паралипоменон подход, но это не будет работать для меня :-( Так что я в конечном итоге делаю это просто создание временной вектор на период, который я нагружал данные для:.

date <-seq(as.POSIXct("2015/1/1 00:00"), as.POSIXct("2015/1/31 23:00"), "hours") 

, а затем добавив его обратно в df. Не то, что я хотел, но он будет работать, пока я не найду окончательное решение :-)

Смежные вопросы