Hello everyone, #I have a long table with a factor Plotfac: > Plotfac[1:20] [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 6 6 #there is the species diversity of each plot (Plotfac): DataSort$div[1:20] [1] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 #and the plant community growing in each plot: > DataSort$community[1:20] [1] DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 ARR HOL [18] ARR HOL ARR HOL ARR HOL #Now I want to have a summary table with data on the plotlevel #I define the new plot variable: Newplot<-levels(Plotfac)#a vector with all plotnumbers 1-n) >Newplot[1:10] [1] "1" "2" "3" "4" "5" "6" "7" "8" "15" "16" #the new div variable (div is numeric, so mean is no problem) PlotDiv<-tapply(DataSort$div,Plotfac,mean) > PlotDiv[1:10] 1 2 3 4 5 6 7 8 15 16 4 4 4 4 2 2 2 2 2 2 #BUT HOW CAN I DO THIS WITH THE CHARACTER COMMUNITY? #A rather unsatisfactory solution: community<-tapply(DataSort$community,Plotfac,as.character) results in: community[1:5] $"1" [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" $"2" [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" $"3" [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" $"4" [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" $"5" [1] "ARR HOL" "ARR HOL" #how can I make community look like "DLRT_1", DLRT_1","DLRT_1","DLRT_1","ARR HOL"... #without repeating the community of each observation within a plot? Is it possible to extract a single "value" out of these repeated structures? Thanks for any suggestions! Steffi -- --------------------------------- Stefanie von Felten Doktorandin ETH Z?rich Institut f?r Pflanzenwissenschaften ETH Zentrum, LFW A 2 Telefon: 044 632 85 97 Telefax: 044 632 11 53 e-mail: stefanie.vonfelten at ipw.agrl.ethz.ch http://www.ipw.agrl.ethz.ch/~svfelten/ und: Universit?t Z?rich Institut f?r Umweltwissenschaften Winterthurerstrasse 190 8057 Z?rich Telefon: 044 635 61 23 Telefax: 044 635 57 11 e-mail: sfelten at uwinst.unizh.ch http://www.unizh.ch/uwinst/homepages/steffi.html
Stefanie von Felten, IPW&IfU wrote:> Hello everyone, > > #I have a long table with a factor Plotfac: > > Plotfac[1:20] > [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 > 5 6 6 > > #there is the species diversity of each plot (Plotfac): > DataSort$div[1:20] > [1] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 > > #and the plant community growing in each plot: > > DataSort$community[1:20] > [1] DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 > DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 ARR HOL > [18] ARR HOL ARR HOL ARR HOL > > #Now I want to have a summary table with data on the plotlevel > #I define the new plot variable: > Newplot<-levels(Plotfac)#a vector with all plotnumbers 1-n) > >Newplot[1:10] > [1] "1" "2" "3" "4" "5" "6" "7" "8" "15" "16" > > #the new div variable (div is numeric, so mean is no problem) > PlotDiv<-tapply(DataSort$div,Plotfac,mean) > > PlotDiv[1:10] > 1 2 3 4 5 6 7 8 15 16 > 4 4 4 4 2 2 2 2 2 2 > > #BUT HOW CAN I DO THIS WITH THE CHARACTER COMMUNITY? > #A rather unsatisfactory solution: > community<-tapply(DataSort$community,Plotfac,as.character) > results in: > community[1:5] > $"1" > [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" > > $"2" > [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" > > $"3" > [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" > > $"4" > [1] "DLRT_1" "DLRT_1" "DLRT_1" "DLRT_1" > > $"5" > [1] "ARR HOL" "ARR HOL" > #how can I make community look like > "DLRT_1", DLRT_1","DLRT_1","DLRT_1","ARR HOL"... > #without repeating the community of each observation within a plot? Is > it possible to extract a single "value" out of these repeated structures?I guess you want sapply(community, "[", 1) Uwe Ligges> Thanks for any suggestions! > > Steffi > >
I am not sure I understand the question but is the situation that
you have two vectors: x and y such that for each level of y
x is constant so that for each level of y you want to find that value
of x? In that case:
x <- c("A", "A", "A", "B",
"B")
y <- c(1,1,2,3,3)
unique(data.frame(x,y))
or
tapply(x, y, head, 1)
or
tapply(x, y, "[", 1)
or if x is a factor
xf <- factor(x)
tapply(as.character(xf), y, head, 1)
Aside. I suggest you use dput to display your data in your post to
make it easier for
others to read it back into R, e.g.
> dput(x)
c("A", "A", "A", "B", "B")
and editing that allows one to post this:
x <- c("A", "A", "A", "B",
"B")
On 3/11/06, Stefanie von Felten, IPW&IfU <sfelten at uwinst.unizh.ch>
wrote:> Hello everyone,
>
> #I have a long table with a factor Plotfac:
> > Plotfac[1:20]
> [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5
> 5 6 6
>
> #there is the species diversity of each plot (Plotfac):
> DataSort$div[1:20]
> [1] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2
>
> #and the plant community growing in each plot:
> > DataSort$community[1:20]
> [1] DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1
> DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 DLRT_1 ARR HOL
> [18] ARR HOL ARR HOL ARR HOL
>
> #Now I want to have a summary table with data on the plotlevel
> #I define the new plot variable:
> Newplot<-levels(Plotfac)#a vector with all plotnumbers 1-n)
> >Newplot[1:10]
> [1] "1" "2" "3" "4"
"5" "6" "7" "8" "15"
"16"
>
> #the new div variable (div is numeric, so mean is no problem)
> PlotDiv<-tapply(DataSort$div,Plotfac,mean)
> > PlotDiv[1:10]
> 1 2 3 4 5 6 7 8 15 16
> 4 4 4 4 2 2 2 2 2 2
>
> #BUT HOW CAN I DO THIS WITH THE CHARACTER COMMUNITY?
> #A rather unsatisfactory solution:
> community<-tapply(DataSort$community,Plotfac,as.character)
> results in:
> community[1:5]
> $"1"
> [1] "DLRT_1" "DLRT_1" "DLRT_1"
"DLRT_1"
>
> $"2"
> [1] "DLRT_1" "DLRT_1" "DLRT_1"
"DLRT_1"
>
> $"3"
> [1] "DLRT_1" "DLRT_1" "DLRT_1"
"DLRT_1"
>
> $"4"
> [1] "DLRT_1" "DLRT_1" "DLRT_1"
"DLRT_1"
>
> $"5"
> [1] "ARR HOL" "ARR HOL"
> #how can I make community look like
> "DLRT_1",
DLRT_1","DLRT_1","DLRT_1","ARR HOL"...
> #without repeating the community of each observation within a plot? Is
> it possible to extract a single "value" out of these repeated
structures?
>
> Thanks for any suggestions!
>
> Steffi
>
>
> --
> ---------------------------------
> Stefanie von Felten
> Doktorandin
>
> ETH Z?rich
> Institut f?r Pflanzenwissenschaften
> ETH Zentrum, LFW A 2
>
> Telefon: 044 632 85 97
> Telefax: 044 632 11 53
> e-mail: stefanie.vonfelten at ipw.agrl.ethz.ch
> http://www.ipw.agrl.ethz.ch/~svfelten/
>
> und:
>
> Universit?t Z?rich
> Institut f?r Umweltwissenschaften
> Winterthurerstrasse 190
> 8057 Z?rich
>
> Telefon: 044 635 61 23
> Telefax: 044 635 57 11
> e-mail: sfelten at uwinst.unizh.ch
> http://www.unizh.ch/uwinst/homepages/steffi.html
>
> ______________________________________________
> R-help at 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
>