r - 在 dplyr 中选择多个列,然后将这些列中的这些观察值更改为 NA 如果它们匹配一个值?
问题描述
我有一个数据框,我想按原样保留其列,但将无意义的值(即每日卡路里摄入量 = 88888)更改为 NA。我正在尝试使用dplyr执行此操作,但找不到将列名组合为列表或匹配前缀(均以“DRPN”开头)并将 88888 值更改为 NA 的解决方案。
尝试过mutate_if()
,但该函数不会获取列列表。
尝试过mutate_at()
,但该功能不接受我的要求。
df_recode <- lab1_final %>%
select(vars(starts_with("DRPN")) %>%
mutate_if(vars, "88888", NA)
我试图将 88888 观察结果与 NA 交换,以便我可以正确分析连续变量。有任何想法吗?
解决方案
在这里,我们可以使用mutate_at
代替mutate_if
. 此外,如果打算只改变选定的列,那么我们不需要select
之前
library(dplyr)
lab1_final %>%
mutate_at(vars(starts_with("DRPN")), na_if, y = "88888")
但是,如果我们只select
对列的一个子集感兴趣并且只返回那些,使用trasmute_at
(这可以避免一个步骤 - 或select
with mutate_all
)
lab1_final %>%
transmute_at(vars(starts_with("DRPN")), na_if, y = "88888")
88888
如果有数字列,则不需要引号。
推荐阅读
- c - C编程中数组中缺少数字
- c# - 如何从源中获取 .pdf 文件以将其复制到目标的每日文件夹下?
- javascript - 用主页上的动态精选帖子内容替换静态内容 - Blogger Blogspot
- css - 我无法处理绝对位置的 z-index
- python - socket.recvmsg 忽略 ancbufsize,辅助数据
- reactjs - 反应选择容器选项宽度
- java - 如何使用 S4 Cloud SDK Connectivity 访问 RabbitMQ 背后的目标服务
- java - 无法在模拟 SNMP4J 代理中注册 OID
- javascript - 如何随机填充矩阵的行?
- hyperledger-fabric - Hyperledger Explorer 未在 8080 上启动(发现问题)