我有一个包含许多不同字符串的列,但有一些需要更改,而其他所有字符串保持不变。作为一个可重复的例子,我有以下几点:
set.seed(42)
x <- sample(c("a", "b", "c"), 10, replace = TRUE)
x
tibble(x) %>% dplyr::mutate(x, x = case_when(x=="a"~"Apple",
x=="c"~"Cat"))
预期输出
x
<chr>
1 Cat
2 Cat
3 Apple
4 Cat
5 b
6 b
7 Cat
8 Apple
9 b
10 Cat
但我得到
x
<chr>
1 Cat
2 Cat
3 Apple
4 Cat
5 NA
6 NA
7 Cat
8 Apple
9 NA
10 Cat
如果我没有指定新字符串代替旧字符串,如果我想要原始字符串,如何避免NA
?
答案 0 :(得分:0)
除dpyr
之外,您可以尝试在ifelse
ifelse
ifelse(x == "a","Apple",ifelse(x == "c", "cat", x))
[1] "cat" "cat" "Apple" "cat" "b" "b" "cat" "Apple" "b" "cat"
答案 1 :(得分:0)
AntoniosK在评论中提供了针对该问题的最准确答案:
mutate(x, x = case_when(x=="a"~"Apple", x=="c"~"Cat", TRUE ~ x))
将保留所有其余值。至关重要的是,TRUE ~ x
是case_when()
中的最后一个参数,因为它将匹配所有情况,因此将不检查以下任何情况。