Я относительно новый пользователь R, и это мой первый вопрос по StackOverflow, поэтому прошу прощения, если мой вопрос неясен или явно задан где-то еще.
У меня есть большой набор данных (7,8 ГБ, 137 миллионов наблюдений), который я загрузил в R в формате ffdf, так как я понимаю, что это позволит мне манипулировать данными (с целью уменьшить их до управляемый размер) без сбоев на моем компьютере.
Мой набор данных состоит из шести функций, одна из которых представляет собой метку времени в формате «2012-10-12 00:30:00 BST». Поскольку каждое наблюдение (показания электричества) проводится ровно через каждые полчаса, я хотел бы классифицировать данные, по которым из 48 получасовых часов дня проводится наблюдение. Поэтому в качестве первого шага я хотел бы отделить дату и время от метки времени. (Цель после этого состоит в том, чтобы кодировать этот столбец времени от 1 до 48 для каждого получаса.)
Следующий код работал для создания нового столбца даты:
ff1$date <- as.character(as.Date(ff1$DateTime))
Однако я изо всех сил пытаюсь сделать то же самое для времени и попробовал несколько методов, основанных на, возможно, грубом копировании из других примеров.
(1) ff1$time <- as.POSIXct(strptime(as.character(ff1$DateTime),"%T"))
(2) ff1$time <- strptime(ff1$DateTime,"%Y-%m-%d %H:%M:%S")
(3) ff1$time <- sapply(strptime(as.character(ff1$DateTime)," "), "[", 2)
Ни одна из этих работ. Ошибки для каждой из трех приведенных выше строк:
(1) Error in strptime(as.character(ff1$DateTime), "%T") : invalid 'x' argument
(2) Error in strptime(ff1$DateTime, "%Y-%m-%d %H:%M:%S") : invalid 'x' argument
(3) Error in strptime(as.character(ff1$DateTime), " ") : invalid 'x' argument
Это потому, что данные в формате fdff? Есть ли другие способы сделать это?
Заранее большое спасибо!
Arjun
dput:
structure(list(LCLid = structure(c(1L, 1L, 1L, 1L), .Label = "MAC000002", class = "factor"),
stdorToU = structure(c(1L, 1L, 1L, 1L), .Label = "Std", class = "factor"),
DateTime = structure(c(1349998200, 1.35e+09, 1350001800,
1350003600), tzone = "", class = c("POSIXct", "POSIXt")),
KWH.hh..per.half.hour. = structure(c(1L, 1L, 1L, 1L), .Label = " 0 ", class = "factor"),
Acorn = structure(c(1L, 1L, 1L, 1L), .Label = "ACORN-A", class = "factor"),
Acorn_grouped = structure(c(1L, 1L, 1L, 1L), .Label = "Affluent", class = "factor"),
date = structure(c(1L, 2L, 2L, 2L), .Label = c("2012-10-11",
"2012-10-12"), class = "factor")), row.names = c("1", "2",
"3", "4"), class = "data.frame")
заголовки соответствующих столбцов:
LCLid DateTime
1 MAC000002 2012-10-12 00:30:00
2 MAC000002 2012-10-12 01:00:00
3 MAC000002 2012-10-12 01:30:00
4 MAC000002 2012-10-12 02:00:00
5 MAC000002 2012-10-12 02:30:00
6 MAC000002 2012-10-12 03:00:00