R 识别组内重复值的第一个实例

R 识别组内重复值的第一个实例,r,dataframe,sequence,repeat,R,Dataframe,Sequence,Repeat,我有以下三列数据框-公司,年份和虚拟(0,1)。对于每个公司,我想扫描所有年份,并确定第一个案例,其中伪值重复多次(连续行)。然后,我想创建一个新的列,其中包含0,对于伪为1的所有年份,包含-1、-2、-3,对于它之前的年份,以及1,2,3对于它之后的年份 ------------------------------ | FIRM | YEAR | DUMMY| NEW_COL ------------------------------ | A | 2006 | 0 | 0

我有以下三列数据框-
公司
年份
虚拟
(0,1)。对于每个
公司
,我想扫描所有年份,并确定第一个案例,其中
伪值
重复多次(连续行)。然后,我想创建一个新的列,其中包含0,对于
为1的所有年份,包含-1、-2、-3,对于它之前的年份,以及1,2,3对于它之后的年份

------------------------------
| FIRM | YEAR | DUMMY| NEW_COL
------------------------------
|  A   | 2006 |   0  |   0   |
------------------------------
|  A   | 2007 |   1  |   0   |
------------------------------
|  A   | 2008 |   0  |   0   |
------------------------------
|  B   | 2006 |   0  |   0   |
------------------------------
|  B   | 2007 |   0  |  -1   |
------------------------------
|  B   | 2008 |   1  |   0   |
------------------------------
|  B   | 2009 |   1  |   0   |
------------------------------
|  B   | 2010 |   0  |   1   |
------------------------------
|  B   | 2011 |   0  |   2   |
------------------------------
|  B   | 2012 |   1  |   3   |
------------------------------
|  B   | 2013 |   1  |   4   |
------------------------------

a
数据表
解决方案

根据你的描述,我认为公司B的2006年应该是-2年

库(data.table)
dt 1)和(假人==1),
.GRP),由=(固定,rleid(虚拟))]
dt
#>公司年度虚拟新科旗玻璃钢
#>1:2006年0 0错误1
#>2:A 2007 10假2
#>3:A 2008 0 0假3
#>4:B 2006 0 0假4
#>5:B 2007 0-1假4
#>6:B 2008 10真实5
#>7:B 2009 10真实5
#>8:B 2010 01假6
#>9:B 2011 0 2假6
#>10:B 2012 13真实7
#>11:B 2013 14真实7
dt[flag==TRUE,result:=fifelse(grp==min(grp),0,99),by=(FIRM)]
dt
#>公司年度虚拟新颜色标志grp结果
#>1:2006年0 0假1不适用
#>2:A 2007 10假2不适用
#>3:A 2008 0 0假3不适用
#>4:B 2006 0 0假4不适用
#>5:B 2007 0-1假4不适用
#>6:B 2008 10真实5 0
#>7:B 2009 10真实5 0
#>8:B 2010 01假6不适用
#>9:B 2011 0 2假6不适用
#>10:B 2012 13真实7 99
#>11:B 2013 14真实7 99
dt[,结果:=lappy(.SD,函数(x){
如果(任何(!is.na(x==0))){
位置0头4:B 2006 0-2
#>5:B 2007 0-1-1
#>6:B 2008 100
#>7:B 2009 1 0 0
#>8:B 2010 01 1
#>9:B 2011 0 2 2
#>10:B 2012 13
#>11:B 2013 14

由(v0.3.0)于2020年4月25日创建。

嗨,弗兰克,感谢您的努力。非常感谢。