# If you know how many years are needed you could do this makenewtable <- function(x, years) { xlist <- split(x, x$firm) new <- list() dat <- lapply(xlist, function(z) if(length(unique(z$year)) == years) {new <- z} ) dat_ <- do.call(rbind, dat) return(dat_) } makenewtable(finaldata, 5)
Scott On Thursday, May 19, 2011 at 6:24 AM, Cecilia Carmo wrote: I have a dataframe with many firm-year observations and many variables. > > Not all firms have information for all the years. > > I want another dataframe with only those firms that have information all > years. > > This is, I want a balanced panel data, but with the maximum number of years. > > In my reprocucible example I want to keep firms 1,2 and 3 (period 2000 to > 2004). > > > > I need your help to create a code for this. > > > > Thank you very much, > > > > CecÃlia Carmo > > (Universidade de Aveiro) > > > > > > #My reproducible example: > > firm<-sort(rep(1:3,5),decreasing=F) > > year<-rep(2000:2004,3) > > X<-rnorm(15) > > data1<-data.frame(firm,year,X) > > data1 > > > > firm<-sort(rep(4:6,3),decreasing=F) > > year<-rep(2001:2003,3) > > X<-rnorm(9) > > data2<-data.frame(firm,year,X) > > data2 > > > > finaldata<-rbind(data1,data2) > > finaldata > > > [[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. > [[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.