通过唯一值子集面板数据

Subsetting panel data via unique values

我想按照特定的标准对面板数据进行细分,并对每个细分进行汇总统计。数据:

  store year    rev space  market
      1 2004 110000  1095     136
      1 2005 110000  1095     136
      1 2006 110000  1095     136
      1 2007 120000  1095     136
      2 2004  35000   800     136
      3 2004  45000  1000     136
      3 2005  45000  1000     136
      3 2006  45000  1000     136
      3 2007  45000  1000     136
      4 2005  17500   320     136
      4 2006  17500   320     136
      4 2007  17500   320     136
      5 2005  45000   580     191
      5 2006  45000   580     191
      5 2007  45000   580     191
      6 2004   7000   345     191
      6 2005   7000   345     191
      6 2006   7000   345     191
      7 2007  10000   500     191

在上面的示例中,我想将商店分为进入者、退出者和在职者。例如,我想了解整个期间有多少商店退出市场,应该如下所示:

 store year   rev space  market
      2 2004 35000   800     136
      6 2006  7000   345     191

已入市:

 store year    rev space  market
      4 2005  17500   320     136
      5 2005  45000   580     191
      7 2007  10000   500     191

并在整个期间一直在任:

 store year    rev  space  market
      1 2004 110000   1095     136
      1 2005 110000   1095     136
      1 2006 110000   1095     136
      1 2007 120000   1095     136     
      3 2004  45000   1000     136
      3 2005  45000   1000     136
      3 2006  45000   1000     136
      3 2007  45000   1000     136

我对 R 的经验不足,无法执行此类任务,因此不胜感激。

看起来是使用 data.table:

的好借口
library(data.table)
setDT(dat)

dat[, if(!max(dat$year) %in% year) tail(.SD,1) , by=store]

#   store year   rev space market
#1:     2 2004 35000   800    136
#2:     6 2006  7000   345    191


dat[, if(!min(dat$year) %in% year) head(.SD,1) , by=store]

#   store year   rev space market
#1:     4 2005 17500   320    136
#2:     5 2005 45000   580    191
#3:     7 2007 10000   500    191

dat[, if(min(dat$year) %in% year & max(dat$year) %in% year) .SD , by=store]

#   store year    rev space market
#1:     1 2004 110000  1095    136
#2:     1 2005 110000  1095    136
#3:     1 2006 110000  1095    136
#4:     1 2007 120000  1095    136
#5:     3 2004  45000  1000    136
#6:     3 2005  45000  1000    136
#7:     3 2006  45000  1000    136
#8:     3 2007  45000  1000    136