首页 > 解决方案 > 根据列的名称和另一个列值将 NA 分配给列

问题描述

我想根据名称和另一个列值将 NA 分配给列。就像下面的例子:

给定数据框 iris,我想将 NA 分配给名称以“Sepal”和列“Species”==“setosa”开头的所有列

最好使用 dplyr mutate_at/mutate_if 的解决方案,也欢迎任何其他解决方案。

我试过

iris %>%
   mutate_if(str_detect(names(.), pattern = "Sepal") & (.$Species == "setosa") , function(x){x <- NA})

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

标签: rdplyr

解决方案


dplyr中,选择包含“Sepal”的变量并将 NA 分配给 Species 为“setosa”的那些行:

iris %>%
  mutate_at(vars(contains("Sepal")), funs(ifelse(Species == "setosa", NA, .))) 

推荐阅读