我有一个数据框架,它的列我想保持原样,但是将无意义的值(即每日卡路里摄入量= 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的观测值,这样我就可以正确地分析连续变量。有什么想法吗?
发布于 2019-09-05 20:02:38
在这里,我们可以使用mutate_at而不是mutate_if。另外,如果我们的意图是只对选定的列进行变异,那么我们之前不需要select
library(dplyr)
lab1_final %>%
mutate_at(vars(starts_with("DRPN")), na_if, y = "88888")但是,如果我们只对select (一个列的子集)感兴趣,并且只返回这些列,请使用trasmute_at (这可以避免一个步骤-或者使用mutate_all的select )。
lab1_final %>%
transmute_at(vars(starts_with("DRPN")), na_if, y = "88888")如果有数字列,则不需要引用88888。
https://stackoverflow.com/questions/57812283
复制相似问题