Подмножество кадра данных для указанного месяца и года в R - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть фрейм данных, где второй столбец - это дата в формате м / д / у. Есть 4 основных столбца: имя, дата, time_taken, homequeue

Я хочу создать подмножества для определенного месяца одного года (например, 11/11, 12/11 и т. Д. c), которые я буду использовать для рассчитать общее время, затраченное людьми определенного homequeue, которые работают с 4/1/2020 по 4/7/2020

Я попробовал код, предложенный в этом ответе: подмножество data.frame с несколькими условиями ( Подмножество данных для указанного месяца и года )

, и оно не работает для меня. Пожалуйста, проверьте изображение для набора данных: данные об использовании **

df <- read.csv('Rm_2020-04-20 copy.csv')

combo <- subset(df, home_queue == 'Brand Effects', format.Date(date, "%m") == "04" & format.Date(date, "%Y") == "20")

**

, но возвращается пустое подмножество с сообщением об ошибке

Ошибка в as.POSIXlt.numeri c (x): необходимо указать «origin»

Я использую версию R 3.3.3 (2017-03-06) на Ma c, спасибо за внимание. Я новичок в стеке потока и обучения R.

1 Ответ

0 голосов
/ 23 апреля 2020

ОП относительно неясен, поэтому этот ответ должен быть умозрительным. Но похоже, что не хватает преобразования ваших значений date в значения POSIXct. Это преобразование может быть достигнуто следующим образом:

Предположим, у вас есть данные, подобные этому:

my.data <- read.csv(text = '
          Date,      Var2,  Var3
                    05/10/2011,    AK,     aa
                    06/15/2011,    AK,     bb
                    07/21/2011,    OH,     cc
                    NA,    OH,     dd
                    05/13/2012,    PA,     ee
                    07/22/2012,    AL,     ff
                    03/28/2013,    NY,     gg
                    ', header=TRUE, stringsAsFactors = FALSE, na.strings = 'NA', strip.white = TRUE)

На данный момент ваши даты для R - просто строки символов, как видно из вызов str:

str(my.data)
'data.frame':   7 obs. of  3 variables:
 $ Date: chr  "05/10/2011" "06/15/2011" "07/21/2011" NA ...
 $ Var2: chr  "AK" "AK" "OH" "OH" ...
 $ Var3: chr  "aa" "bb" "cc" "dd" ...

Чтобы R распознал даты как правильные, используйте as.POSIXct:

my.data$my_Date <- as.POSIXct(my.data$Date, format = "%m/%d/%Y")

Теперь вы можете подмножество, например, для мая:

my.data[format.Date(my.data$my_Date, "%m")=="05" &
      !is.na(my.data$my_Date),]

        Date Var2 Var3    my_Date
1 05/10/2011   AK   aa 2011-05-10
5 05/13/2012   PA   ee 2012-05-13

Или выберите май одного года, например, 2012:

my.data[format.Date(my.data$my_Date, "%Y")=="2012" & 
          format.Date(my.data$my_Date, "%m")=="05" &
          !is.na(my.data$my_Date),]

        Date Var2 Var3    my_Date
5 05/13/2012   PA   ee 2012-05-13
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...