【发布时间】:2021-03-17 11:45:55
【问题描述】:
如何根据规范索引我需要的行?
id<-c(65,65,65,65,65,900,900,900,900,900,900,211,211,211,211,211,211,211,45,45,45,45,45,45,45)
age<-c(19,22,23,24,25,21,26,31,32,37,38,22,23,25,28,29,31,32,30,31,36,39,42,44,48)
stat<-c('intern','reg','manage1','left','reg','manage1','manage2','left','reg',
'reg','left','intern','left','intern','reg','left','reg','manage1','reg','left','intern','manage1','left','reg','manage2')
mydf<-data.frame(id,age,stat)
我需要创建 5 个变量:
- m01time & m12time:测量成为一级经理(manage1)之前经过的年数,然后从manage1到manage2,不管它是否在同一个工作。 (以年为单位)
- change:记录他们是否经历过 manage1 和 manage2 之间的工作变动(如果“left”发生在 manage1 和 manage2 之间),(0 或 1)
- & 4:m1p 和 m2p:在成为 manager1 和 manager2(intern、reg 或 manage1)之前占领职位。
这里有很多我不需要的信息,我不知道如何忽略(所有 211 工作在他们成为经理之前都经历过)。
最终结果应该是这样的:
id m01time m02time change m1p m2p
1 65 4 NA NA reg <NA>
2 900 NA 5 0 <NA> manage1
3 211 1 NA NA reg <NA>
4 45 3 9 1 intern reg
我尝试将 ifelse 与 lag() 和 lead() 一起使用来捕获一些条件,但是我不确定还有更多 for 循环类型的作业(例如如何捕获介于两者之间的“左”)与。
【问题讨论】:
标签: r dplyr data.table