Поиск и замена текста в R - PullRequest
0 голосов
/ 04 октября 2018

Недавно я начал изучать R и пытался изучить больше, автоматизируя процесс.Ниже приведен пример данных, и я пытаюсь создать новый столбец, найдя и заменив определенный текст внутри метки (имя: Обозначения).

Поскольку я получаю эту работу с множеством новых данныхЯ хотел бы автоматизировать использование R-программирования, а не формул Excel.

Набор данных:

strings<-c("Zonal Manager","Department Manager","Network Manager","Head of Sales","Account Manager","Alliance Manager","Additional Manager","Senior Vice President","General manager","Senior Analyst", "Solution Architect","AGM")

Код R, который я использовал:

t<-data.frame(strings,stringsAsFactors = FALSE)
colnames(t)[1]<-"Designations"
y<-sub(".*Manager*","Manager",strings,ignore.case = TRUE)

Задача:
При этом все данные были изменены в качестве менеджера, но мне нужно было заменить другие обозначения основными темами.

Я пытался с помощью оператора ifelse, grep, grepl, str, sub и т. Д., Но я не сделалне получается то, что я ищу

Я не могу использовать первые / вторые / последние слова (как 'delimit'), поскольку основные темы разбегаются туда-сюда .. Например: директор по информационным технологиям или коммерческие финансыМенеджер или AGM

Excel Работа:
Я уже кодировал 300 основных тем как ...

Менеджер (для всех GM, Asst.Manager, Менеджер по продажам и т. Д.) Архитектор (решение)Арч, старший Арк и др.) Директор (старший директор, директор, Asst.Diректор и т. д.) Старший аналитик-аналитик (руководитель отдела продаж)

Что я ищу: мне нужно было создать новый столбец и заменить текст соответствующими основными темами, как я это делал в Excel, используяR.

Я в порядке, если беру основные темы, которые я уже закодировал в Excel, для соответствия темам с использованием программирования R (как vlookup в Excel).

Ожидаемый результат: введите описание изображения здесь Заранее спасибо за помощь!

Да, точно так же, как я ожидаю.Спасибо!!Но когда я попробовал ту же методологию, загрузив новый набор данных (файл Excel) и с

df %>% 
   mutate(theme=gsub(".*(Manager|Lead|Director|Head|Administrator|Executive|Executive|VP|President|Consultant|CFO|CTO|CEO|CMO|CDO|CIO|COO|Cheif Executive Officer|Chief Technological Officer|Chief Digital Officer|Chief Financial Officer|Chief Marketing Officer|Chief Digital Officer|Chief Information Officer,Chief Operations Officer)).*","\\1",Designations,ignore.case = TRUE))

, это не сработало.Должен ли я исправить где-то еще.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

данные:

strings<-c("Zonal Manager","Department Manager","Network Manager","Head of Sales","Account Manager",
           "Alliance Manager","Additional Manager","Senior Vice President","General manager","Senior Analyst", "Solution Architect","AGM")

вам нужно подготовить таблицу хорошего обзора: (вы заполняете ее и делаете ее идеальной.)

lu_table <- data.frame(new = c("Manager", "Architect","Director"), old = c("Manager|GM","Architect|Arch","Director"), stringsAsFactors = F)

Затем вы можете позволить mapply выполнитьзадание:

mapply(function(new,old) {ans <- strings; ans[grepl(old,ans)]<-new; strings <<- ans; return(NULL)}, new = lu_table$new, old = lu_table$old)

теперь посмотрите на strings:

> strings
 [1] "Manager"               "Manager"               "Manager"               "Head of Sales"         "Manager"               "Manager"              
 [7] "Manager"               "Senior Vice President" "General manager"       "Senior Analyst"        "Architect"             "Manager" 

обратите внимание:

В этом решении используется <<-.Так что это может быть не самым лучшим решением.Но работает в этом случае.

0 голосов
/ 04 октября 2018

Вы имеете в виду что-то подобное?

library(dplyr)
strings <-
  c(
    "Zonal Manager",
    "Department Manager",
    "Network Manager",
    "Head of Sales",
    "Account Manager",
    "Alliance Manager",
    "Additional Manager",
    "Senior Vice President",
    "General manager",
    "Senior Analyst",
    "Solution Architect",
    "AGM"
  )

df = data.frame(Designations = strings)


df %>%
  mutate(
    theme = gsub(
      ".*(manager|head|analyst|architect|agm|director|president).*",
      "\\1",
      Designations,
      ignore.case = TRUE
    )
  )
#>             Designations     theme
#> 1          Zonal Manager   Manager
#> 2     Department Manager   Manager
#> 3        Network Manager   Manager
#> 4          Head of Sales      Head
#> 5        Account Manager   Manager
#> 6       Alliance Manager   Manager
#> 7     Additional Manager   Manager
#> 8  Senior Vice President President
#> 9        General manager   manager
#> 10        Senior Analyst   Analyst
#> 11    Solution Architect Architect
#> 12                   AGM       AGM

Создано в 2018-10-04 пакетом представительство (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...