Условие группового наблюдения в панели данных - PullRequest
1 голос
/ 10 апреля 2019

У меня есть датафрейм, похожий на этот

id year changetype
 1  2010         1
 1  2012         2
 2  2014         2
 2  2014         2
 3  2012         1
 3  2012         2
 3  2014         2
 3  2014         1

Я хочу получить что-то вроде этого

id year changetype
 1  2010         1
 1  2012         2
 2  2014         2
 2  2014         2

Другими словами, я хочу удалить все наблюдения, связанные с идентификатором 3, потому что в том же году (2012) идентификатор = 3 представляет оба changetype = 1 и changetype = 2.

Как я могу наложить условие на переменную для группового наблюдения по идентификатору и году? Большое спасибо всем, кто мне помогает.

1 Ответ

0 голосов
/ 10 апреля 2019

Вы можете использовать пакет data.table для достижения этого -

library(data.table)
setDT(dt)
dt[,count:=lapply(.SD,function(x)length(unique(x))), by=.(id,year)]
dt[,keep:=uniqueN(count), by=id][keep==1,.(id,year,changetype)]

   id year changetype
1:  1 2010          1
2:  1 2012          2
3:  2 2014          2
4:  2 2014          2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...