Подтвердить что ты не робот

Подмножество data.frame по дате

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

я пытался

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 обрабатывает текст как число, а не число, и поэтому он не будет работать?

4b9b3361

Ответ 1

Ну, это явно не число, так как в нем есть тире. Сообщение об ошибке и два комментария говорят вам, что это фактор, но комментаторы, видимо, ждут и пропускают сообщение. 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 предполагают, что формат является либо "ГГГГ-ММ-ДД", либо "ГГГГ/ММ/ДД". Вам нужно сравнить как классы: дату и дату, либо символ для символа.

Ответ 2

Первое, что вам нужно сделать с переменными даты, это подтвердить, что 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"),]