从面板数据中提取具有共同值的观测值

时间:2017-06-16 12:15:07

标签: r extract panel-data

让我解释一下我的问题:我有一个由2011年和2012年的家庭观察组成的数据框。每个家庭都有一个特定的ID号(字符类型),允许多年来跟随家庭。问题是,我需要只获得2011年和2012年出现的家庭,以便了解特征的变化。因此,我想从我的数据集中仅提取家庭ID出现两次的行,但我真的不知道该怎么做。 如果有人对此有所了解,我真的很高兴!谢谢,干杯!

1 个答案:

答案 0 :(得分:0)

你去吧!

df <- data.frame(householdid = c(sample(1:10,5),sample(1:10,5)), year=c(rep(2011,5),rep(2012,5)))
#    householdid year
# 1            4 2011
# 2            7 2011
# 3            2 2011
# 4            3 2011
# 5            1 2011
# 6            5 2012
# 7            7 2012
# 8            4 2012
# 9            3 2012
# 10          10 2012
counts <- setNames(as.data.frame(table(df$householdid)),c("householdid","n"))
#   householdid n
# 1           1 1
# 2           2 1
# 3           3 2
# 4           4 2
# 5           5 1
# 6           7 2
# 7          10 1
hh_2y <- subset(counts,n==2)
#   householdid n
# 3           3 2
# 4           4 2
# 6           7 2
df_2y <- merge(df,hh_2y)
# householdid year n
# 1           3 2011 2
# 2           3 2012 2
# 3           4 2012 2
# 4           4 2011 2
# 5           7 2012 2
# 6           7 2011 2