我有一个数据框,我想保留其列,但将无意义的值(,即每日卡路里摄入量= 88888 )更改为NA。我正在尝试使用 dplyr 进行此操作,但是找不到将列名组合为列表或匹配前缀(都以“ DRPN”开头)并将88888值更改为NA的解决方案。 。
尝试了mutate_if()
,但是该函数不会获取列列表。
尝试了mutate_at()
,但是该函数不接受我的要求。
df_recode <- lab1_final %>%
select(vars(starts_with("DRPN")) %>%
mutate_if(vars, "88888", NA)
我试图与NA交换88888个观测值,以便我可以正确分析连续变量。有什么想法吗?
答案 0 :(得分:2)
在这里,我们可以使用mutate_at
代替mutate_if
。另外,如果打算只对选定的列进行突变,那么我们不需要select
library(dplyr)
lab1_final %>%
mutate_at(vars(starts_with("DRPN")), na_if, y = "88888")
但是,如果我们仅对select
个列的子集感兴趣,并且仅返回这些列,请使用trasmute_at
(这可以避免一步-或select
与mutate_all
一起使用)
lab1_final %>%
transmute_at(vars(starts_with("DRPN")), na_if, y = "88888")
如果有数字列,则不需要引号88888
。