管理未在R中作为重复项输入的重复项

时间:2016-11-23 19:36:28

标签: r duplicates data-munging

我有来自州政府机构的数据集,我正在尝试清理它。一个障碍是标题没有输入标准(例如,DIR,DIRECTOR,DIR,都是允许的输入)。另一个障碍是个人可能有几个职称,但只输入其中一个。

例如,考虑下面的员工#1(Emp_1)。这个人是一名教员。他们年复一年地教书。但在2015年,除了教学职责外,他们还选择了一些被归类为非教师或豁免的工作。但他们的“真实”分类是教师。在此示例中,Emp_1已获得两条记录。我已经快速创建了一个名为“job.cat”的新分类,以帮助识别教师。但是在下面的Emp_1和Emp_4的情况下,你可以看到它们被错误地归类为“非教师”。 现在,我可以为“STIPEND / COORD FAC,EXMT EMP”做一个grep,并将其视为教师,但也有一些人从未教过,并且总是“STIPEND / COORD FAC,EXMT EMP”,所以应该是算作非教师。

为了解决这个问题,我想我应该创建第二个名称,职位和工作类别的数据集,清理它,然后将它合并回下面的数据,我将使用employee_name和正确的工作。猫。 但我想知道是否有更好的方法来使用类似函数,ifelse或for循环。

d <- read.table(text = 'employee_name   job_title   Salary_2012 Salary_2013 Salary_2014 Salary_2015 job.cat
Emp_1   FACULTY 31200   37400   33300   NA  Faculty
Emp_1   "STIPEND/COORD FAC,EXMT EMP"  NA  NA  NA  37300   Non-fac
Emp_2   FACULTY 29300   28400   31800   NA Faculty
Emp_2   "PART TIME FACULTY"   NA  NA  NA  30800   Faculty
Emp_3   FACULTY NA  NA  4300    NA  Faculty
Emp_4   FACULTY 50000   59900   31300   NA  Faculty
Emp_4   "STIPEND/COORD FAC,EXMT EMP"  NA  NA  NA  22000   Non-fac', header = TRUE)

1 个答案:

答案 0 :(得分:0)

我认为您可以通过employee_name对结果进行分组来检查这一点,检查该员工是否有任何教职员工,然后将其定义为教职员工:

library(dplyr)
d %>% 
  group_by(employee_name) %>% 
  mutate(job.cat = ifelse(any(grep("FACULTY",job_title)),"Faculty", "Non-fac"))

您的其他问题可能有类似的解决方案:

d %>% 
  group_by(employee_name) %>% 
  mutate(job_title = ifelse(any(grep("DIR",job_title)),"Director", job_title))