I presume you want to use such tables to summarize baseline information (a.k.a "Table 1" in medical papers) Try the Hmisc package ... will do the tables and statistics for you and save them as tex (which you can import directly into in your favorite Office like program after running htlatex)
library(Hmisc) sample(c("A","B","C"),size=20,replace = T)->type rnorm(20)->value runif(20)->-value2 data.frame(ty=type,val=value,val2=value2)->test summary(ty~val+val2,test,method="reverse",test=T)->sumstat print(sumstat,prmsd=T) (will give you a table with the 3 quartiles, the mean+/-sd latex(sumstat) (will give you a beautiful tex version) Read the help info of "summary.formula" to customize the table to your needs Christos > From: dwinsem...@comcast.net > To: deeeperso...@googlemail.com > Date: Sat, 24 Apr 2010 17:25:14 -0400 > CC: r-help@r-project.org > Subject: Re: [R] basic table statistics > > > On Apr 23, 2010, at 3:48 PM, Maxim wrote: > > > I have a very simple question, but I'm obviously not able to solve the > > problem on my own. > > > > I have a data.frame like > > > > sample(c("A","B","C"),size=20,replace = T)->type > > > > rnorm(20)->value > > > > data.frame(ty=type,val=value)->test > > > > There must be some built in functions, that will do some descriptive > > statistics with tabular output, in the end I like to have something > > like > > > > number of samples mean sd ............. > > > > A 5 > > B 9 > > C 6 > > > > So I need a function that counts the number of occurrences of > > factors in > > type and then does something like the *summary* function, but factor > > specific. > > > > I tried: > > vector()->Median > > vector()->SD > > vector()->Mean > > > > as.data.frame(table(type))->int > > for (count in c(1:(nrow(int)))) > > { > > subset(test, ty==as.character(int$type[count])) -> subtest > > median(subtest$val)->Median[count] > > sd(subtest$val)->SD[count] > > mean(subtest$val)->Mean[count] > > } > > > > > > cbind(int,Median,SD,Mean) > > > require(Design) # loads Hmisc which has ne of many version of > describe() > > describe(test) > test > > 2 Variables 20 Observations > ------------------------------------------------------------------------- > ty > n missing unique > 20 0 3 > > A (4, 20%), B (5, 25%), C (11, 55%) > ------------------------------------------------------------------------- > val > n missing unique Mean .05 .10 .25 > 20 0 20 0.07383 -0.865776 -0.815317 -0.707465 > .50 .75 .90 .95 > 0.005735 0.634226 1.270066 1.771820 > > lowest : -1.7965 -0.8168 -0.8152 -0.8040 -0.7170 > highest: 0.6790 1.0680 1.2149 1.7665 1.8729 > ------------------------------------------------------------------------- > > > > require(doBy) > > summaryBy(value~ty, test, FUN=list(length, mean, min, max, sd, > median)) > ty value.length value.mean value.min value.max value.sd > 1 A 4 -0.03442822 -0.8151531 1.766502 1.2258221 > 2 B 5 0.34541927 -0.8167919 1.214906 0.7647165 > 3 C 11 -0.01025352 -1.7964684 1.872865 1.0109676 > value.median > 1 -0.54453098 > 2 0.57020532 > 3 -0.06826249 > > > The by() function which is an application of tapply can also be used. > > > > > > > > > This works, but: isn't this much too complicated, I bet there is such > > functionality embedded in the base packages, but I cannot find it. > > > > > > Maxim > > > David Winsemius, MD > West Hartford, CT > > ______________________________________________ > 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. _________________________________________________________________ Hotmail: Trusted email with powerful SPAM protection. [[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.