【发布时间】:2020-02-24 03:22:50
【问题描述】:
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","
【问题讨论】:
-
请研究
?case_when:“所有RHS值必须是同一类型。不一致的类型将引发错误。这也适用于RHS中使用的NA值:NA是合乎逻辑的,请酌情使用NA_real_、NA_complex、NA_character_、NA_integer_等类型的值。"
标签: r if-statement dplyr