Problem with table
On 19/03/2012 17:01, Terry Therneau wrote:
R version 2.14.0, started with --vanilla
> table(c(1,2,3,4,NA), exclude=2, useNA='ifany')
1 3 4 <NA> 1 1 1 2 This came from a local user who wanted to remove one particular response from some tables, but also wants to have NA always reported for data checking purposes. I don't think the above is what anyone would want.
You have not told us what you want!
Try
> table(as.factor(c(1,2,3,4,NA)), exclude=2, useNA='ifany')
1 3 4 <NA>
1 1 1 1
Note carefully how 'exclude' is defined:
exclude: levels to remove from all factors in ?...?. If set to ?NULL?,
it implies ?useNA="always"?.
As you did not specify a factor, 'exclude' was used in forming the 'levels'.
PS. This is on a background of our local desires, which is to have the default action of the table command be to report NA, if present. (It's one of the only commands that we globally override at Mayo.) The user had added only the exclude=2 argument, and the useNA value is our default. The above makes this harder to do without rewriting the command wholesale, which is ok (we've done it before at various times in R and Splus) but we would avoid it if possible. Please no wars about whether this is the "right" decison or not, we've done it for 10+ years and quite firmly believe the extra robustness gained by having NA appear is worth the maintainance bother, correctness being paramount in medical research. We're not trying to convert anyone else, just get feedback on the best way to approach this.
Most likely, feed table() a factor with the properties you want.
Terry T.
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595