library(tidyverse)
df <- tibble(ID = c("ABC", "EFG", "HIJ", "KLM", "NOP", "QRS"),
Date = as.Date(c("2019-01-03", "2019-01-08",
"2019-06-09", "2019-06-11",
"2019-08-12", "2019-08-21")))
#> # A tibble: 6 x 2
#> ID Date
#> <chr> <date>
#> 1 ABC 2019-01-03
#> 2 EFG 2019-01-08
#> 3 HIJ 2019-06-09
#> 4 KLM 2019-06-11
#> 5 NOP 2019-08-12
#> 6 QRS 2019-08-21
Давайте начнем с кадра данных выше. То, что я хочу, показано прямо ниже. Первые две позиции в фрейме данных удовлетворяют условиям в моем операторе case_when()
и заполняются символами "fizz" и "buzz". Остальная часть заполняется NA
.
df %>%
mutate(col3 = case_when(ID == "ABC" & Date == as.Date("2019-01-03") ~ "fizz",
ID == "EFG" & Date == as.Date("2019-01-08") ~ "buzz"))
#> # A tibble: 6 x 3
#> ID Date col3
#> <chr> <date> <chr>
#> 1 ABC 2019-01-03 fizz
#> 2 EFG 2019-01-08 buzz
#> 3 HIJ 2019-06-09 NA
#> 4 KLM 2019-06-11 NA
#> 5 NOP 2019-08-12 NA
#> 6 QRS 2019-08-21 NA
Тем не менее, когда я пытаюсь явно указать функции case_when()
заполнение оставшейся части фрейма данных NA
Я получаю ошибку, показанную ниже? Разве я не использую TRUE ~ NA
правильным способом?
Разве аргумент TRUE ~ _XYZ_
не говорит функции, чтобы заполнить любое условие, не удовлетворяемое условиями выше, _XYZ_
?
df %>%
mutate(col3 = case_when(ID == "ABC" & Date == as.Date("2019-01-03") ~ "fizz",
ID == "EFG" & Date == as.Date("2019-01-08") ~ "buzz",
TRUE ~ NA)
#> Error: unexpected ',' in "
#> ID == "EFG" & Date == as.Date("2019-01-08") ~ "buzz","