Извлечение наблюдений, имеющих общее значение, из панельных данных

Позвольте мне объяснить мою проблему: у меня есть кадр данных, состоящий из наблюдений за домохозяйствами за 2011 и 2012 годы. У каждого домохозяйства есть определенный идентификационный номер (тип персонажа), который позволяет следить за домохозяйством на протяжении многих лет. Дело в том, что мне нужно получить только те домохозяйства, которые появляются как в 2011, так и в 2012 году, чтобы увидеть, как изменятся характеристики. Поэтому я хотел бы извлечь из своего набора данных только те строки, для которых идентификатор домохозяйства встречается дважды, но я действительно не знаю, как это сделать. Если у кого-то есть идеи по этому поводу, буду очень рад! Спасибо, привет!


person Etienne    schedule 16.06.2017    source источник
comment
Можете ли вы добавить, пожалуйста, как выглядят данные? Затем мы можем предоставить вам правильный код, чтобы ответить на ваш вопрос :-)   -  person R18    schedule 16.06.2017
comment
Это набор из 10000 наблюдений (строк) с 55 переменными (столбцами). Один столбец — это идентификатор домохозяйства, и у меня есть 265 повторяющихся идентификаторов домохозяйств, что означает, что 530 домохозяйств ответили на опрос за два года. Это достаточно хорошо для вас, чтобы визуализировать это? :)   -  person Etienne    schedule 16.06.2017
comment
Я сослался на печать head(data), чтобы увидеть имена в объяснении проблемы.   -  person R18    schedule 16.06.2017


Ответы (1)


Ну вот!

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
person Moody_Mudskipper    schedule 16.06.2017
comment
Хорошо, думаю, я вижу в этом логику :) Большое вам спасибо, ребята! - person Etienne; 19.06.2017