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 >