Могу ли я использовать символьный вектор с recode () и mutate () - PullRequest
0 голосов
/ 08 июня 2018

У меня есть табличка, как показано ниже:

   # A tibble: 6 x 8
  projectRcn projectID projectAcronym role        id name   shortName activityType
       <int>     <int> <chr>          <chr>    <int> <chr>  <chr>     <chr>       
1     208327    741617 PROSME-INN     parti~  9.44e8 INSTI~ INMA Buc~ PUB         
2     208327    741617 PROSME-INN     parti~  9.39e8 CAMER~ CCIPH     OTH         
3     208327    741617 PROSME-INN     parti~ 10.00e8 FUNDA~ CRIMM     OTH         
4     208327    741617 PROSME-INN     coord~  9.41e8 AGENT~ ADRSM     OTH         
5     208327    741617 PROSME-INN     parti~  9.41e8 SC IN~ SC INPUL~ PRC         
6     208327    741617 PROSME-INN     parti~  9.54e8 AGENT~ ADRBI     PUB 

Я могу использовать recode () с mutate (), чтобы добавить дополнительный столбец, основанный на $ activityType, называемый $ orgType, с помощью кода ниже:

h2020orgs <- mutate(h2020orgs,
                    orgType = recode(activityType,
                          HES = "Higher/Secondary Education Establishment",
                          OTH = "Other",
                          PRC = "Private/For-profit entity",
                          PUB = "Public body",
                          REC = "Research Organisation"))

Есть ли способ заменить список, начинающийся с 'HES = "Высшее / Среднее учебное заведение", одним вектором после' activityType,??

Я попытался определитьсимвольный вектор ...

cordisActivityTypes <- c(HES = "Higher/Secondary Education Establishment",
                         OTH = "Other",
                         PRC = "Private/For-profit entity",
                         PUB = "Public body",
                         REC = "Research Organisation")

... и затем использование этого вместо индивидуально набранных строк символов:

h2020orgs <- mutate(h2020orgs,
                    orgType = recode(activityType,
                                     as.character(cordisActivityTypes)))

это приводит к следующей ошибке:

Error in mutate_impl(.data, dots) : 
  Evaluation error: Argument 2 must be named, not unnamed.

Пытаюсь ли я перестроить мое использование перекодирования в mutate?Можете ли вы предложить альтернативу для ввода каждой отдельной инструкции в перекодировать?Когда дело доходит до перекодирования со многими отдельными инструкциями, код начинает становиться очень длинным и громоздким!

1 Ответ

0 голосов
/ 08 июня 2018

Вместо создания вектора используйте list

cordisActivityTypes <- list(HES = "Higher/Secondary Education Establishment",
                     OTH = "Other",
                     PRC = "Private/For-profit entity",
                     PUB = "Public body",
                     REC = "Research Organisation")

, а затем выполните оценку с помощью !!!

h2020orgs %>%
             mutate(orgType = recode(activityType, !!! cordisActivityTypes))
...