Перекодировать переменную в столбцах с несколькими множителями, основываясь на условии, используя функцию внутри mutate_all - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть эти данные:

    # A tibble: 169 x 5
   `Topical Anesthesist`             `Skin Glue`                   `Sedation Servi~ `Child Life Ther~ Hypnosis     
   <chr>                             <chr>                         <chr>            <chr>             <chr>        
 1 No, because we do not see/treat ~ No, because we do not see/tr~ No               No                No           
 2 No, we do not have one available  Yes                           No               No                No           
 3 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                No           
 4 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                No           
 5 Yes: LET/LAT (lidocaine, epineph~ Yes                           No               No                No           
 6 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                Yes: during ~
 7 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                Yes: during ~
 8 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                Yes: during ~
 9 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                Yes: during ~
10 Yes: LET/LAT (lidocaine, epineph~ Yes                           Yes              No                No   

В зависимости от столбцов у меня есть значения с «да», после которых следуют различные цепочки символов («да, весь день», «да: во время целый день ", et c ...). Все мои ценности начинаются с да или нет. Я хочу заменить каждое значение, начинающееся с «да», словом «Проверено», а каждое значение, начинающееся с «Нет» с «Не проверено» («Проверено» и «Не проверено» - это другие значения, которые я использую в остальной части моего набора данных и моего кода используйте их)

Я пытаюсь:

data %>%
  mutate_all(.funs = fct_recode,
             "Checked" = starts_with("yes"),
             "Unchecked" = starts_with("no"))

Я получаю эту ошибку:

start_with () `должен использоваться в выборе функция.

Я не знаю, как просто решить мою проблему ...

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 10 апреля 2020

Следующий код берет набор данных starwars, находит каждую запись, начинающуюся с "bl", и заменяет ее на "HA":

library(dplyr)
data(starwars)
func = function(x){
  ifelse(grepl("^bl",x), "HA", x)
}

mutate_all(starwars, func)

Следуя этой схеме, я предлагаю вам попробовать что-то вроде:

func = function(x){
  ifelse(grepl("^Yes",x), "Checked", ifelse(grepl("^No",x), "Unchecked", x))
}
data %>% mutate_all(func)

Или более элегантно, используя case_when:

func = function(x){
  case_when(grepl("^Yes", x) ~"Checked",
            grepl("^No", x) ~"Unchecked",
            TRUE ~as.character(x))
}

data %>% mutate_all(func)

...