在R中查找和替换文本

在R中查找和替换文本,r,if-statement,str-replace,grepl,R,If Statement,Str Replace,Grepl,最近,我开始学习R,并试图通过自动化过程来探索更多。下面是示例数据,我试图通过查找并替换标签colname:Designations中的特定文本来创建一个新列 因为,我正在处理大量的新数据,我想使用R编程而不是excel公式来自动化这些数据 数据集: 它不起作用。我应该在别的地方更正吗 你的意思是这样的吗 图书馆弹琴 字符串% 变异 主题=gsub 。*经理|负责人|分析师|建筑师|年度股东大会|董事|总裁。*, \\1, 名称, ignore.case=TRUE >命名主题 >1名区域经理 >

最近,我开始学习R,并试图通过自动化过程来探索更多。下面是示例数据,我试图通过查找并替换标签colname:Designations中的特定文本来创建一个新列

因为,我正在处理大量的新数据,我想使用R编程而不是excel公式来自动化这些数据

数据集:


它不起作用。我应该在别的地方更正吗

你的意思是这样的吗

图书馆弹琴 字符串% 变异 主题=gsub 。*经理|负责人|分析师|建筑师|年度股东大会|董事|总裁。*, \\1, 名称, ignore.case=TRUE >命名主题 >1名区域经理 >2部门经理 >3网络管理器 >4销售负责人 >5客户经理 >6联盟经理 >7额外的经理 >8高级副总裁 >9总经理 >10高级分析员 >11解决方案架构师 >12周年大会 由v0.2.1数据于2018年10月4日创建:

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%>%mutateDesignation\u new=str\u extractions指定、str\u cstring、collapse=|,这肯定会对您有所帮助。如果您能使用dputI为我们提供可复制的示例,我们可以帮助您。我已经包含了图像预期输出供您参考。如果有高级分析师而不仅仅是分析师,OP需要获得高级分析师。是的,与我的预期完全相同。谢谢但是当我尝试处理大量数据时,我收到了相同的输出是的,与我所经历的完全相同。谢谢但当我上传新的数据集excel文件并使用df%>%mutatetheme=gsub.*经理|领导|董事|主管|行政|执行|副总裁|总裁|顾问|首席财务官|首席营销官|首席技术官|首席数字官|首席营销官|Officer |首席数字官|首席信息官,首席运营官。*,\\1,指定,忽略。case=TRUE它不起作用。我应该在别的地方更正吗。?hi@Anonymous你说它不起作用是什么意思?运行代码时发生了什么?它应该是类似于f%>%mutate theme=gsub.*经理|领导|董事|主管|行政|执行|执行|副总裁|总裁|顾问|首席财务官|首席营销官|首席运营官|首席信息官|高级职员|首席运营官。*,\\1,指定,忽略。case=TRUE Hi-TC Zhang,谢谢。我得到了我期望的结果。谢谢你的帮助。嗨,安德烈,谢谢!这很有效。但我考虑了第二种解决方案,因为我有更多的数据需要在数据集中替换。感谢你的时间和努力。再次感谢。使用第二个解决方案,您将无法将解决方案拱门映射到架构师。祝你好运。
t<-data.frame(strings,stringsAsFactors = FALSE)
colnames(t)[1]<-"Designations"
y<-sub(".*Manager*","Manager",strings,ignore.case = TRUE)
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))
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(function(new,old) {ans <- strings; ans[grepl(old,ans)]<-new; strings <<- ans; return(NULL)}, new = lu_table$new, old = lu_table$old)
> strings
 [1] "Manager"               "Manager"               "Manager"               "Head of Sales"         "Manager"               "Manager"              
 [7] "Manager"               "Senior Vice President" "General manager"       "Senior Analyst"        "Architect"             "Manager"