【发布时间】:2018-10-04 07:23:21
【问题描述】:
最近,我开始学习 R 并尝试通过自动化流程来探索更多内容。下面是示例数据,我正在尝试通过查找和替换标签中的特定文本来创建一个新列 (colname:Designations)。
因为,我正在使用大量新数据完成这项工作,我希望使用 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'),因为主题分散在来回。例如:首席信息官或商业财务经理或年度股东大会
Excel 工作:
我已经将 300 个主题编码为...
经理(适用于所有总经理、助理经理、销售经理等) 建筑师(Solution Arch、Sr. Arch 等) 总监(高级总监、总监、副总监等) 高级分析师 分析师 Head(销售主管)
我在寻找什么: 我需要创建一个新列,并将文本替换为相关的主题,就像我在 Excel 中使用 R 所做的那样。
如果我可以使用我已经在 excel 中编码的主要主题来匹配使用 R 编程的主题(如 excel 中的 vlookup),我可以。
预期结果: enter image description here 提前感谢您的帮助!
是的,与我所期待的完全一样。谢谢!!但是当我通过上传新数据集(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))
它没有工作。我应该在其他地方更正吗?
【问题讨论】:
-
预期结果是什么?
-
df %>% mutate(Designation_new= str_extract(Designations, str_c(strings, collapse = "|"))) ,这肯定会对你有所帮助。 .如果您可以使用 dput() 为我们提供可重现的示例,我们可以为您提供帮助
-
我已附上图片(预期输出)供您参考。
标签: r if-statement str-replace grepl