colClasses дата и время чтения.csv
У меня есть некоторые данные вида:
date,time,val1,val2
20090503,0:05:12,107.25,1
20090503,0:05:17,108.25,20
20090503,0:07:45,110.25,5
20090503,0:07:56,106.25,5
Это происходит из файла csv. Я относительно новичок в R, поэтому я попытался
data <-read.csv("sample.csv", header = TRUE, sep = ",")
И используя POSIXlt
, а также POSIXct
в аргументе colClasses
, но я не могу создать один столбец или "переменную" из моих данных даты и времени. Я хочу сделать это, чтобы затем я мог выбирать произвольные временные рамки, на которых вычислять текущую статистику, такую как max, min, mean (а затем boxplots и т. д.).
Я также подумал, что мог бы преобразовать его в временной ряд и обойти его таким образом,
dataTS <-ts(data)
Но я все еще могу использовать начало, конец и частоту в своих интересах. Спасибо за вашу помощь.1 ответ:
Вы не можете сделать это при чтении данных в R с помощью аргумента
colClasses
, потому что данные занимают два "столбца" в CSV-файле. Вместо этого загрузите данные и обработайте столбцыdate
иtime
в одну переменнуюPOSIXlt
:dat <- read.csv(textConnection("date,time,val1,val2 20090503,0:05:12,107.25,1 20090503,0:05:17,108.25,20 20090503,0:07:45,110.25,5 20090503,0:07:56,106.25,5")) dat <- within(dat, Datetime <- as.POSIXlt(paste(date, time), format = "%Y%m%d %H:%M:%S"))
[я предполагаю, что это день месяца года??, Если не использовать
"%Y%d%m %H:%M:%S"
]Что дает:
> head(dat) date time val1 val2 Datetime 1 20090503 0:05:12 107.25 1 2009-05-03 00:05:12 2 20090503 0:05:17 108.25 20 2009-05-03 00:05:17 3 20090503 0:07:45 110.25 5 2009-05-03 00:07:45 4 20090503 0:07:56 106.25 5 2009-05-03 00:07:56 > str(dat) 'data.frame': 4 obs. of 5 variables: $ date : int 20090503 20090503 20090503 20090503 $ time : Factor w/ 4 levels "0:05:12","0:05:17",..: 1 2 3 4 $ val1 : num 107 108 110 106 $ val2 : int 1 20 5 5 $ Datetime: POSIXlt, format: "2009-05-03 00:05:12" "2009-05-03 00:05:17" ...
Теперь вы можете удалить
date
и ' time, если хотите:> dat <- dat[, -(1:2)] > head(dat) val1 val2 Datetime 1 107.25 1 2009-05-03 00:05:12 2 108.25 20 2009-05-03 00:05:17 3 110.25 5 2009-05-03 00:07:45 4 106.25 5 2009-05-03 00:07:56