One option: /## Your data:/ data <- structure(list(id = structure(c(1L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("a", "b", "c", "d"), class = "factor"), year = c(2000L, 2000L, 2001L, 1999L, 2000L, 2001L, 2002L, 1998L, 1999L, 2000L, 2001L, 2002L), y = c(1L, NA, 3L, 1L, 2L, 4L, 5L, 6L, 5L, 6L, 7L, 3L), z = c(1L, 2L, 3L, 1L, 2L, NA, 4L, 5L, NA, 6L, 7L, 6L)), .Names = c("id", "year", "y", "z"), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")) /## Drop missing data/ Data <- na.omit(data) /## Find three years in a row with data/ n <- names(which(apply(table(Data$id, Data$year), 1, function(x) {z<-rle(x); z<-z[z$values>0]; any(z$lengths>=3)}))) /## Now get the original data for these ids/ data[data$id %in% n, ] /# id year y z # 8 d 1998 6 5 # 9 d 1999 5 NA # 10 d 2000 6 6 # 11 d 2001 7 7 # 12 d 2002 3 6/
This is probably not optimal, but I hope it helps a little. Allan On 22/07/10 10:18, Christian Schoder wrote: > Dear R-user, > > a few weeks ago I consulted the list-serve with a similar question. > However, my task changed a little but sufficiently to get lost again. So > I would appreciate any help on the following issue. > > I use the plm package and work with firm-level data in a panel. I would > like to eliminate all firms that do not fulfill the requirement of > having an observation in every variable used for at least x consecutive > years. > > For illustration of the problem assume the following data set > >> data >> > id year y z > 1 a 2000 1 1 > 2 b 2000 NA 2 > 3 b 2001 3 3 > 4 c 1999 1 1 > 5 c 2000 2 2 > 6 c 2001 4 NA > 7 c 2002 5 4 > 8 d 1998 6 5 > 9 d 1999 5 NA > 10 d 2000 6 6 > 11 d 2001 7 7 > 12 d 2002 3 6 > where id is the index of the firm, year the index for the year, and y > and z are variables. Now, I would like to get rid of all firms with, > let's say, less than 3 consecutive years in which there are observations > for every variable. Hence, the procedure should yield > >> data.reduced >> > id year y z > 1 d 1998 6 5 > 2 d 1999 5 NA > 3 d 2000 6 6 > 4 d 2001 7 7 > 5 d 2002 3 6 > > Thank you very much for any help! > > Cheers, Christian > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.