Назначить NA столбцам на основе их имени и другого значения столбца - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы назначить NA для столбцов на основе их имени и другого значения столбца. Как в следующем примере:

Учитывая данные радужной оболочки, я хотел бы назначить 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

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Или даже короче:

iris %>%
  mutate_at(vars(contains("Sepal")), 
            funs(na_if(Species, "setosa")))
0 голосов
/ 14 ноября 2018

В dplyr выберите переменные, содержащие «Sepal», и присвойте NA тем строкам, где Species - «setosa»:

iris %>%
  mutate_at(vars(contains("Sepal")), funs(ifelse(Species == "setosa", NA, .))) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...