R 根据列的名称和其他列值为列指定NA
我想根据列的名称和另一个列值将NAs分配给列。 如以下示例所示: 给定数据帧iris,我想将NA分配给名称以“Sepal”和“Species”=“setosa”开头的所有列 使用dplyr mutate_at/mutate_的解决方案如果更可取,也欢迎任何其他解决方案 我试过了R 根据列的名称和其他列值为列指定NA,r,dplyr,R,Dplyr,我想根据列的名称和另一个列值将NAs分配给列。 如以下示例所示: 给定数据帧iris,我想将NA分配给名称以“Sepal”和“Species”=“setosa”开头的所有列 使用dplyr mutate_at/mutate_的解决方案如果更可取,也欢迎任何其他解决方案 我试过了 iris %>% mutate_if(str_detect(names(.), pattern = "Sepal") & (.$Species == "setosa") , function(x){x
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
iris%>%
如果(str_detect(names(.),pattern=“Sepal”)&(.$Species==“setosa”),函数(x){x在dplyr
中,选择包含“Sepal”的变量,并将NA分配给物种为“setosa”的行:
在dplyr
中,选择包含“萼片”的变体,并将NA分配给物种为“刚毛”的行:
甚至更短:
iris %>%
mutate_at(vars(contains("Sepal")),
funs(na_if(Species, "setosa")))
甚至更短:
iris %>%
mutate_at(vars(contains("Sepal")),
funs(na_if(Species, "setosa")))
myIrismyIris