У меня есть фрейм данных, который выглядит так
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
Другими словами, я хочу удалить все наблюдения, связанные с id 3, потому что в том же году (2012) id=3 представляет как changetype=1, так и changetype=2.
Как я могу наложить условие на переменную для группового наблюдения по идентификатору и году? Большое спасибо всем, кто мне помогает.
Вы можете использовать пакет 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