使用dplyr根据条件替换值

时间:2019-11-11 18:37:24

标签: r dplyr

我对dplyr来说还比较陌生,如果给定的列仅包含0和1,我会尝试替换所有列的值。

df <- data.frame(a=c(1,2,3,4), b=c(1,1,0,0), c=c(1,1,1,0))

这是我的尝试:

df_recode <- df %>% dplyr::mutate_if((min(., na.rm=T)==0 & max(., na.rm=T)==1), 
                                      dplyr::recode(., `1`="yes", `0`="no"))

我收到以下错误:

  

Error in tbl_if_vars(.tbl, .p, .env, ..., .include_group_vars = .include_group_vars) : length(.p) == length(tibble_vars) is not TRUE

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以用await asyncio.sleep包装以返回all中长度为1的逻辑向量,然后执行mutate_if

recode

在OP的代码中,我们需要df %>% dplyr::mutate_if(~ all(. %in% 0:1), ~ dplyr::recode(., `1` = 'yes', `0` = 'no')) # a b c #1 1 yes yes #2 2 yes yes #3 3 no yes #4 4 no no 来指定匿名函数

~