Подмножество R по дате

У меня есть набор данных EPL2011_12. Я хотел бы сделать новый набор данных, подмножая оригинал по дате. Даты указаны в столбце с именем Date. Даты указаны в формате DD-MM-YY.

Я пробовал

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12)

и

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12")

но получайте это сообщение об ошибке каждый раз.

Warning message:
In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors

Я предполагаю, что означает, что R обрабатывает как текст вместо числа, и почему он не будет работать?

2 ответа

Ну, это явно не число, так как в нем есть тире. Сообщение об ошибке и два комментария говорят вам, что это фактор, но комментаторы, видимо, ждут и пропускают сообщение. Dirk предлагает вам сделать это:

EPL2011_12$Date2 <- as.Date( as.character(EPL2011_12$Date), "%d-%m-%y")

После этого вы можете сделать это:

EPL2011_12FirstHalf <- subset(EPL2011_12, Date2 > as.Date("2012-01-13") )

Функции даты R предполагают, что формат является либо "ГГГГ-ММ-ДД", либо "ГГГГ/ММ/ДД". Вам нужно сравнить как классы: дату и дату, либо символ для символа.


Первое, что вам нужно сделать с переменными даты, это подтвердить, что R читает его как Date. Для этого для переменной (то есть вектора/столбца), называемой Date, в кадре данных EPL2011_12 введите

class(EPL2011_12$Date)

Вывод должен читать [1] "Дата". Если это не так, вы должны отформатировать его как дату, введя

EPL2011_12$Date <- as.Date(EPL2011_12$Date, "%d-%m-%y" )

Обратите внимание, что дефис в формате даты ( "% d-% m-% y" ) выше также может быть слэшем ( "% d/% m/% y" ). Убедитесь, что R видит это как дату. Если это не так, попробуйте выполнить другую команду форматирования

EPL2011_12$Date <- format(EPL2011_12$Date, format="%d/%m/%y" )

Как только у вас есть формат Date, вы можете использовать команду subset, или вы можете использовать скобки

WhateverYouWant <- EPL2011_12[EPL2011_12$Date> as.Date("2014-12-15"),]

licensed under cc by-sa 3.0 with attribution.