В большом фрейме данных («данные») с четырьмя столбцами я должен добавить еще один столбец («Ожидание») со значениями, условно основанными на первых четырех столбцах.Я получаю «Ошибка: Столбец 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
Мне нужна помощь, чтобы решить эту проблему.Я также открыт для других предложений о том, как достичь моего результата.