【发布时间】:2021-10-12 02:46:31
【问题描述】:
在这个问题(update names based on columns)之后,我想问的另一件事
df <- data.frame(name1 = c("a", "a", "a", "a", 'a', NA, NA, NA,NA),
name2 = c("b", "b", "b", "b", "c", NA, NA, NA,NA),
name3 = c("b", "b", "b", "b", "c", "a", "a", "a", "f"))
df
name1 name2 name3
1 a b b
2 a b b
3 a b b
4 a b b
5 a c c
6 <NA> <NA> a
7 <NA> <NA> a
8 <NA> <NA> a
9 <NA> <NA> f
现在,我想保留f,同时将a 替换为b。
-期望的输出
name1 name2 name3
1 a b b
2 a b b
3 a b b
4 a b b
5 a c c
6 <NA> <NA> b
7 <NA> <NA> b
8 <NA> <NA> b
9 <NA> <NA> f
来自@Rui 和@TarJae 的cmets 的代码
df %>%
mutate(name3 = case_when(
any(name1 == "a") & is.na(name2) ~ "b",
TRUE ~ name3
))
但是,在这种情况下,这不起作用,因为我从 name2 调用 NA。
对我有什么建议吗?
【问题讨论】:
-
您是否只想将
names3的值从a更改为b? -
是的,想法是把
a改成b,但是替换应该基于一些条件,像这样 -
@Tjn25 提供的代码可以正常工作并提供您所显示的预期输出。您应该提供更好的解释或更好的示例来说明您究竟想要做什么,而不是稍后在 cmets 中解释。
-
是的,这对我来说是一个很大的模棱两可。谢谢你提醒我。
-
问题不清楚,例如“这篇文章”和“来自我的问题”是什么意思?