基于R中的多个其他列创建列

基于R中的多个其他列创建列,r,dplyr,R,Dplyr,我正试图根据我的数据中的三列(公司,名称,以及年份)创建多个其他列 我想创建多个列,这些列提供下表所示的输出。以下是我要创建的每个列的标准 年数:一个人在公司工作的年数。 7年\u Span:过去7年(自本年起)一个人在公司工作的年数。 连续\u年:一个人在公司工作的连续年数。 Years\u差距:上次为公司工作到再次加入公司之间的年数 基于公司、名称和年份列:我想创建上面定义的其他列 单位 名称 年 年数 七年 连续10年 年差距 基础知识 约翰 2002 7. 1. 3. 0 基础知识 约翰

我正试图根据我的数据中的三列(
公司
名称
,以及
年份
)创建多个其他列

我想创建多个列,这些列提供下表所示的输出。以下是我要创建的每个列的标准

年数:
一个人在公司工作的年数。
7年\u Span:
过去7年(自本年起)一个人在公司工作的年数。
连续\u年:
一个人在公司工作的连续年数。
Years\u差距:
上次为公司工作到再次加入公司之间的年数

基于
公司
名称
年份
列:我想创建上面定义的其他列

单位 名称 年 年数 七年 连续10年 年差距 基础知识 约翰 2002 7. 1. 3. 0 基础知识 约翰 2003 7. 2. 3. 0 基础知识 约翰 2004 7. 3. 3. 0 基础知识 戴夫 2005 2. 1. 1. 0 基础知识 约翰 2006 7. 4. 1. 1. 基础知识 戴夫 2007 2. 2. 1. 1. 基础知识 约翰 2008 7. 5. 2. 1. 基础知识 约翰 2009 7. 5. 2. 0 英国广播公司 吉姆 2010 1. 1. 1. 0 基础知识 吉姆 2010 2. 1. 2. 0 英国广播公司 戴夫 2011 1. 1. 1. 0 BBB 约翰 2011 1. 1. 1. 0 基础知识 吉姆 2011 2. 2. 2. 0 基础知识 约翰 2012 7. 4. 1. 2.
已编辑

df公司名称年份
#>1 ABC约翰2002
#>2 ABC约翰2003
#>3 ABC约翰2004
#>4 ABC Dave 2005
#>5 ABC约翰2006
#>6 ABC Dave 2007
#>7 ABC约翰2008
#>8 ABC约翰2009
#>9 BBC吉姆2010
#>10 ABC吉姆2010
#>11英国广播公司戴夫2011
#>12 BBB约翰2011
#>13 ABC吉姆2011
#>14 ABC约翰2012
图书馆(跑步者)
图书馆(dplyr)
df%>%
集团(公司、名称)%>%
变异(年数=n(),
X7年\u跨度=跑步者(x=年,
k=7,
idx=年,
f=函数(x)长度(x)),
连续年=总和(c(0,差(年))!=1),
年差距=年-滞后(年,默认值=第一年-1)-1)%>%
分组依据(连续年,.add=T)%>%
突变(连续年=n())%>%
解组()
#>#A tibble:14 x 7
#>公司名称年份编号\u年份X7年份\u跨度连续\u年份\u差距
#>                                        
#>1 ABC John 2002 7 13 0
#>2 ABC John 2003 7 2 3 0
#>3 ABC John 2004 7 3 0
#>4 ABC Dave 2005 2 1 0
#>5 ABC John 2006 7 4 1 1
#>6 ABC Dave 2007 2 1 1
#>7 ABC John 2008 7 5 2 1
#>8 ABC John 2009 7 5 2 0
#>9英国广播公司吉姆2010 11 0
#>10 ABC吉姆2010 2 1 2 0
#>11 BBC Dave 2011 11 10
#>12 BBB约翰2011 11 0
#>13 ABC吉姆2011 2 0
#>14 ABC约翰2012 7 4 1 2

由(v2.0.0)于2021-05-25创建。

请提供数据帧的代码。您可以使用dput(数据帧)您所说的“本年度”是什么意思?去年?2021年?“年距:上次员工在公司工作之间的年数。”。从此人上次在公司工作到什么?@GuedesBF感谢您的考虑。“当前年”是指如果从2004计算,然后考虑前7年从2004开始,而不是从2003落后。对于第二个澄清,是指该人员上次在公司工作到再次加入公司与他们一起工作之间的年数。因此,基本上是从上次为公司工作到再次加入公司的差距。为什么连续几年的ABC+John
1
?不是应该是2吗?比我的答案好多了。干得好。我不清楚连续年份的计算是的,它仍然需要OP的一些澄清。我想你可能需要像这里的
max()
这样的东西,不太确定如何按所有“条纹”分组<代码>…连续年=最大(连续年)…
谢谢@AnilGoyal,这非常有用@GuedesBF,我将在
连续一年
上尝试最大值方法。祝你们都过得愉快@AnilGoyal,非常感谢,伙计!