r - 基于列 R 更新名称
问题描述
在这个问题之后(根据列更新名称),我想问的另一件事
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 评论的代码
df %>%
mutate(name3 = case_when(
any(name1 == "a") & is.na(name2) ~ "b",
TRUE ~ name3
))
但是,在这种情况下,这不起作用,因为我NA
从name2
. 对我有什么建议吗?
解决方案
如果你只是想保留f
,这个怎么样?
编辑除了a
并且b
不会被改变。
df %>%
mutate(name3 = case_when(
!(name3 %in% c("a", "b")) ~ name3,
any(name1 == "a") & is.na(name2) ~ "b",
TRUE ~ name3
))
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
推荐阅读
- flutter - 处理 null 的颤振搜索功能
- javascript - 更改 JavaScript 字符串中间的颜色?
- r - 在 R 中,如何使用正则表达式来查找字符串的模式?
- c++ - 在 C++ 中使用带有 Stack 模板的字符串时遇到问题
- python - Visual Studio Code - 交互式窗口:即使安装了 jupyter,也无法更改环境
- cookiecutter - python cookiecutter:有没有办法在 cookiecutter 中强制输入变量?
- python - 找不到文件错误 - 如何处理该错误
- python - /admin/message/messages/add/ django rest 框架中的 DataError
- mysql - SQL不返回数据
- python - 如何将实时视频从 url 流式传输到 python tkinter?