> tapply(!is.na(foo$div), foo$yr, sum) 1998 1999 2000 0 4 2 > tapply(!is.na(foo$org), foo$yr, sum) 1998 1999 2000 4 4 2 >
Or perhaps the number of unique non-NA divisions and organizations in the data for each year?
> tapply(foo$div, foo$yr, function(x) length(na.omit(unique(x)))) 1998 1999 2000 0 4 2 > tapply(foo$org, foo$yr, function(x) length(na.omit(unique(x)))) 1998 1999 2000 4 4 2 >
(I don't understand where the "3" in your desired output comes from though, which maybe indicates I completely misunderstand your request.)
Andy Bunn wrote:
I have a very simple query with regard to summarizing the number of factors present in a certain snippet of a data frame. Given the following data frame:
foo <- data.frame(yr = c(rep(1998,4), rep(1999,4), rep(2000,2)), div = factor(c(rep(NA,4),"A","B","C","D","A","C")), org = factor(c(1:4,1:4,1,2)))
I want to get two new variables. Object ndiv would give the number of divisions by year: 1998 0 1999 3 2000 2 Object norgs would give the number of organizations 1998 4 1999 4 2000 2 I figure xtabs should be able to do it, but I'm stuck without a for loop. Any suggestions? -Andy
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html