Столбец `x` относится к кавычкам неподдерживаемого типа - PullRequest
0 голосов
/ 10 июля 2019

В большом фрейме данных («данные») с четырьмя столбцами я должен добавить еще один столбец («Ожидание») со значениями, условно основанными на первых четырех столбцах.Я получаю «Ошибка: Столбец Wait имеет неподдерживаемый тип цитируемого вызова»

Я предпочитаю ответы с dplyr и mutate и Case When.

Мой фрейм данных выглядит так:

#Creating a sample dataset
#A = Datetime
#a, b and c are error codes
# 0 means successful
data <- data.frame(a = c("2018-06-01 09:00:17",
                         "2018-06-01 20:31:54",
                         "2018-06-01 20:32:49", 
                         "2018-06-01 20:34:45",
                         "2018-06-02 12:28:27",
                         "2018-06-04 22:01:58",
                         "2018-06-05 01:33:03",
                         "2018-06-05 01:33:12"),
                   b = c(0, 0, 91, 0, 522, 0,501, 501),
                   c = c(511, 250, 250, 250, 501, 511, 501, 501),
                   d = c(0, 522, 0, 559, 200, 0, 501, 501),
                   stringsAsFactors = FALSE) 

#Change character to Datetime
data$a <- as_datetime(data$a, tz="GMT")

Вот что я написал (я не эксперт в r):

#Error Code Vector

V <- c(91,200,250,501,511,522)

#Adding DateShift Column
data<- data %>% 
  arrange((a))%>%
  mutate(DateShift = lag(a))
data

#Calculating the WaitSecs
data <- data %>%
  mutate(Wait = case_when(b == 0 & c %in% V & d != c & d != b) ~ 1,
         (b == 0 & c %in% V & d != c & d != b) ~ 1,
         (b %in% V & c != b & d == 0) ~ 1,
         (b %in% V & c == b & d != c) ~ a - DateShift,
         TRUE ~ 0)

Я получаю ошибку ниже:

"Ошибка: столбец Waitвызов в кавычках неподдерживаемого типа "

Ожидаемый результат Должен быть:

data <- data.frame(a = c("2018-06-01 09:00:17",
                         "2018-06-01 20:31:54",
                         "2018-06-01 20:32:49", 
                         "2018-06-01 20:34:45",
                         "2018-06-02 12:28:27",
                         "2018-06-04 22:01:58",
                         "2018-06-05 01:31:34",
                         "2018-06-05 01:31:46",
                         "2018-06-05 01:33:03",
                         "2018-06-05 01:33:03",
                         "2018-06-05 01:33:12"),
                   b = c(0, 0, 91, 0, 522, 0, 0, 501, 0, 501, 501),
                   c = c(511, 250, 250, 250, 501, 511, 501, 501, 501, 501, 501),
                   d = c(0, 522, 0, 559, 200, 0, 501, 0, 501, 501,0),
                   DateShift = c(NA,
                     "2018-06-01 09:00:17",
                         "2018-06-01 20:31:54",
                         "2018-06-01 20:32:49", 
                         "2018-06-01 20:34:45",
                         "2018-06-02 12:28:27",
                         "2018-06-04 22:01:58",
                         "2018-06-05 01:31:34",
                         "2018-06-05 01:31:46",
                         "2018-06-05 01:33:03",
                         "2018-06-05 01:33:03"),
                   Wait = c(1, 1, 1, 1, 1, 1, 0, 12, 0, 0, 9),
                   stringsAsFactors = FALSE) 
data 

Мне нужна помощь, чтобы решить эту проблему.Я также открыт для других предложений о том, как достичь моего результата.

...