On Feb 25, 2011, at 3:09 PM, Christopher R. Dolanc wrote:
I'm trying to use tapply to output means and SD or SE for my data but
seem to be limited by how many times I can subset it. Here's a snippet
of my data

stems353[1:10,]
     Time DataSource   Plot Elevation Aspect Slope     Type Species
SizeClass Stems
1  Modern    Cameron 70F221      1730    ESE    20  Conifer    ABCO
Class1     3
2  Modern    Cameron 70F221      1730    ESE    20  Conifer    ABMA
Class1     0
3  Modern    Cameron 70F221      1730    ESE    20 Hardwood    ACMA
Class1     0
4  Modern    Cameron 70F221      1730    ESE    20 Hardwood    AECA
Class1     0
5  Modern    Cameron 70F221      1730    ESE    20 Hardwood    ARME
Class1     0
6  Modern    Cameron 70F221      1730    ESE    20  Conifer    CADE
Class1    15
7  Modern    Cameron 70F221      1730    ESE    20 Hardwood    CELE
Class1     0
8  Modern    Cameron 70F221      1730    ESE    20 Hardwood    CONU
Class1     0
9  Modern    Cameron 70F221      1730    ESE    20  Conifer    JUCA
Class1     0
10 Modern    Cameron 70F221      1730    ESE    20  Conifer    JUOC
Class1     0

I'd like to see means/SD of "Stems" stratified by "Species", "Time" and
"SizeClass".  I can get R to give me this for means by species:

tapply(stems353$Stems, stems353$Species, mean)
        ABCO         ABMA         ACMA         AECA
ARME         CADE         CELE
0.7305240793 0.8569405099 0.0003541076 0.0010623229 0.0017705382
0.4684844193 0.0063739377
        CONU         JUCA         JUOC         LIDE
PIAL         PICO         PIJE
0.0017705382 0.0003541076 0.0959631728 0.0138101983 0.3905807365
1.5651558074 0.2315864023
        PILA         PIMO        PIMO2         PIPO
PISA         POTR         PSME
0.1774079320 0.1880311615 0.0311614731 0.6735127479 0.0237252125
0.0506373938 0.2000708215
        QUCH         QUDO         QUDU         QUKE
QULO         QUWI        Salix
0.0474504249 0.1203966006 0.0000000000 0.2071529745 0.0003541076
0.0548866856 0.0003541076
        SEGI         TSME
0.0021246459 0.5017705382
but I really need to see each species by SizeClass and Time so that  
each
value would be labeled something like "ABCOSizeClass1TimeModern".
Adding 2 variables to the function doesn't seem to work

tapply(stems353$Stems, stems353$Species, stems353$SizeClass,
stems353$Time, mean)
Some functions let you put an arbitrary number of items after the  
first (aggregate() always confuses me because it _does_ this)  but  
tapply expects them to be in a list or vector, so try:
with( stems353, tapply(Stems, list(Species, SizeClass, Time) , mean) )

with() improves readability

Error in match.fun(FUN) :
  'stems353$SizeClass' is not a function, character or symbol
The third item in your arguments got matched to what tapply was  
expecting to be a function name.
I've already created proper subsets for each of these groups, e.g. one
subset is called "stems353ABCO1" and I can run analyses on this.  But,
trying to extract means straight from those subsets doesn't seem to work
mean(stems353ABCO1)
[1] NA
Warning message:
In mean.default(stems353ABCO1) :
  argument is not numeric or logical: returning NA

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.

Reply via email to