我有一些 2004-2007 年的面板数据,我想根据唯一值进行选择。更准确地说,我试图找出整个期间各个商店的进入和退出。数据样本:
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
包,如果您的 data.frame
被称为 df
:
dt = data.table(df)
exit = dt[,list(ExitYear = max(year)),by=store]
exit = exit[ExitYear != 2007] #Or whatever the "current year" is for this table
enter = dt[,list(EntryYear = min(year)),by=store]
enter = enter[EntryYear != 2003]
更新
要获取所有列而不仅仅是年份和存储,您可以这样做:
exit = dt[,.SD[year == max(year)], by=store]
exit[year != 2007]
store year rev space market
1: 2 2004 35000 800 136
2: 6 2006 7000 345 191
关于r - 选择唯一的非重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287923/