对我来说,我有什么似乎是一个非常复杂的R循环来执行一组数据以确定是否雇员目前被称为或雇用(我是数据分析师谁现在担任数据分析师和数据科学家)。为了使它更复杂,我想知道他们是否被称为特定的工作代码或不。我将概述1)我需要什么和2)什么会是惊人的。R循环创建虚拟编码字段
样本数据:
EMPLID Jobcode Job.Entry.Date Term.Date
1 147935 100880 2016-09-04 <NA>
2 147935 100884 2015-07-27 <NA>
3 147935 100887 2013-07-28 <NA>
4 147935 100887 2013-07-28 2015-03-23
5 147935 100889 2012-12-18 <NA>
6 1510844 100890 2013-06-30 <NA>
7 1510844 100890 2013-07-21 <NA>
8 1510844 100890 2016-07-10 <NA>
9 1510844 100895 2006-01-04 <NA>
10 1510844 100895 2016-04-10 <NA>
11 1510844 100895 2016-09-04 <NA>
1)我想创建一个新的领域,我们的电话是 “TermCode”,其中以下是满足:
1 = EMPLID最近的期限。日期在最近的Job.Entry.Date之后(即,EMPLID是TERMED)
0 = EMPLID最近的Job.Entry.Date在最近的Term.Date之后(即,EMPLID未被TERMED )。
这很复杂,因为一些EMPLID有多个Term.Dates和多个Job.Entry.Dates,它们并不总是在同一行上。
2)同样的事情,除了1我想“TermCode”生成以下:
1 = EMPLID最近Term.Date是最近Job.Entry.Date之后和一个以下作业代码(%c中的作业代码%(“101545”,“101318”,“100897”,“100895”,“100891”,“100885”,“100884”,“100880”,“100879”,“100875 “,”100873“))(即EMPLID TERMED作为这些JobCodes之一)
0 = EMPLID最近的Job.Entry.Date在最近的Term.Date之后(即,EMPLID不是TERMED )
2 =的EMPLID最近Term.Date是最近Job.Entry.Date之后和其他任何工作守则(即高于11个JobCodes以外称为EMPLID)
这让我着迷,最好的解释%>%?无论如何,它还会使每个EMPLID产生一行,而EMPLID的最大数量是什么? –
这是一个很好的描述:http://r4ds.had.co.nz/pipes.html。只产生一个线路切换出“mutate”为“汇总”。 – roarkz
非常感谢@Zak!当我用“汇总”替换“mutate”时,我得到了一个关于“期待单个值”的错误,我假设这是因为我使用了max而不是sum。我尝试使用以下但无效:jobentrydat_termcodes <-jobentrydat_alltechs%>% group_by(EMPLID)%>% 汇总(entry_date_max = max(Job.Entry.Date), TermCode = unique(ifelse(!is.na (Term.Date)&Term.Date> entry_date_max,1,0))) –