按组细分面板数据 [英] Subset panel data by group

查看:84
本文介绍了按组细分面板数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想按组对不平衡的面板数据集进行子集化.对于每个小组,我都希望在第一年和最后几年保留这两个观察结果.

I would like to subset an unbalanced panel data set by group. For each group, I would like to keep the two observations in the first and the last years.

如何最好地在R中做到这一点?例如:

How do I best do this in R? For example:

dt <- data.frame(name= rep(c("A", "B", "C"), c(3,2,3)), 
                 year=c(2001:2003,2000,2002,2000:2001,2003))

> dt
  name year
1    A 2001
2    A 2002
3    A 2003
4    B 2000
5    B 2002
6    C 2000
7    C 2001
8    C 2003

我想拥有的东西:

  name year
1    A 2001
3    A 2003
4    B 2000
5    B 2002
6    C 2000
8    C 2003

推荐答案

这是一种可能的data.table快速解决方案

Here's a quick possible data.table solution

library(data.table)
setDT(dt)[, .SD[c(1L, .N)], by = name]
#    name year
# 1:    A 2001
# 2:    A 2003
# 3:    B 2000
# 4:    B 2002
# 5:    C 2000
# 6:    C 2003

或者如果您只有两列

dt[, year[c(1L, .N)], by = name]

这篇关于按组细分面板数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆