Grep并在R中附加列

时间:2018-07-12 09:54:56

标签: r string pattern-matching string-matching sparse-dataframe

我有2000行HR数据集,需要在grepping字符串模式后追加列。我想从df2到df1匹配(有时不是完全匹配)edu列,并打印各自的Dep行。

此外,当df1中没有edu模式匹配时,再次粘贴相同的Dep字符串,而不是NA,反之亦然(如预期结果的最后两行所示)。有什么建议么?谢谢。

  

df2 <-data.frame(Dep = c(“研究与开发”,“销售”,“研究与开发”,“研究与开发”,“销售”,“销售”),Edu = c(“生命科学”,“市场营销”,“辅助医疗”,“其他”,“技术研究”,“商业”))

     

df1 <-data.frame(Dep = c(“销售”,“销售”,“研究与开发”,“研究与开发”,“人力资源”,“研究与开发”,“法律部分”) ,Edu = c(“生命科学”,“市场营销”,“医疗”,“其他”,“人力资源”,“技术”,“法律”))

预期产量

        Dep_df1          Edu_df1_df2          Dep_df2
        Sales          Life Sciences          Research & Development 
        Sales          Marketing          Sales
        Research & Development          Medical          Research & Development 
        Research & Development          Other          Research & Development 
        Human Resources          Human Resources          Human Resources 
        Research & Development          Technical          Sales
        legal section          Law          legal section
        sales          Business           sales

2 个答案:

答案 0 :(得分:0)

一种可能的方式-使用dplyr加入。这将导致在相同的命名列后附加.x.y的列名。

library(dplyr)
df1 <- data.frame(Dep = c("S", "S", "R"), Edu = c("LS", "M", "O"))
df2 <- data.frame(Dep = c("G", "L", "Q"), Edu = c("LS", "M", "O"))

df2 %>% left_join(df1, by = c("Education")

答案 1 :(得分:0)

经过一番尝试,这项工作奏效。

dd=merge(df1, df2[, c("Edu", "Dep")], by="Edu", all.x = TRUE) 
transform(dd, dep.yfill = pmax(Dep.x, Dep.y, na.rm = TRUE))