Выберите данные времени

Я хочу выбрать данные только между 2015-1 и 2018-1.

usefuldata1 <-usefuldata[usefuldata$zeit > "2014 - 12",]

usefuldata2 <-usefuldata1[usefuldata1$zeit < "2018-2",]

Больше, чем 2014 работает. Однако меньше, чем в 2018 году, нет. Я получаю тот же номер, что и раньше.

Мои данные выглядят следующим образом:

x <- sample(letters, size = 30, replace = T)
y <- paste(sample(2010:2020, size = 30, replace = T),
           sample(1:12, size = 30, replace = T), sep = "-")

df <- data.frame(name = x, date = y)

person SIDI    schedule 15.03.2019    source источник


Ответы (1)


В R есть очень удобный тип, называемый Date, по опыту около 90% всех проблем с датами могут быть решены с его помощью.

   see: ?as.Date for help

В вашем случае первое, что нужно сделать, это отформатировать y как тип даты, добавив дни.

   x <- sample(letters, size = 30, replace = T)
   y <- paste(sample(2010:2020, size = 30, replace = T),
       sample(1:12, size = 30, replace = T),
       "01", sep = "-") # <- this is the day (01) for all.

Затем мы должны отформатировать его как тип Date.

   y = as.Date(y, format = "%Y-%m-%d") # year complete (%Y), month (%m) and day (%d)
   df <- data.frame(name = x, date = y)

И подмножить их.

    dateIndex = which(y > "2014-12-31" & y < "2018-01-01")
    subset_df = df[dateIndex,]

Я надеюсь, это поможет вам.

person Pedro Henrique S    schedule 15.03.2019