2017-03-24 84 views
0

我在四個獨立的實驗中使用tapply壓縮在多種條件下生長的多種植物的大型數據集。 tapply然後吐出物種總結的輸出。我試圖將這些單獨的物種從輸出中提取出來用於進一步分析。所以,tapply給我這個(從一些虛擬數據):R tapply壓縮結果

> tapply(results, list(trial,condition,species),mean) 
> 
, , species1 

     A   B   C   D 
1 -0.6357911 0.6127278 -0.23812194 -0.2769131 
2 -0.3851283 -0.5955274 -0.08072294 -0.7298832 
3 0.2029780 -1.0282842 0.11518872 -0.6522809 
4 -0.2254586 0.4215911 -0.84305584 -0.1108188 

, , species2 

     A   B   C   D 
1 -0.4762501 0.35766102 -0.53821633 -0.64798979 
2 0.0558234 0.18602479 -0.48208241 1.09532972 
3 -1.0695515 0.84401536 -0.02232301 -0.02064807 
4 -0.2423312 -0.02145042 -0.18834442 -0.08221573 

從哪裏獲得每一個物種的平均值,每個條件(A-d)下,在4個獨立的實驗(1-4)上運行。那麼是否可以說,分離物種A,然後每列平均爲1-4?

+0

這將是更容易幫助你,如果你提供的[重複的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)通過樣本輸入數據和該輸入的期望輸出,我們可以測試可能的解決方案。 – MrFlick

回答

0

不完全確定數據的結構。但這是一個嘗試。

#Data generation function runif 
data_gen <- function() { 
    x <- 
    data.frame(A=runif(4, -1.005, 1.0049), 
     B=runif(4, -1.005, 1.0049), 
     C=runif(4, -1.005, 1.0049), 
     D=runif(4, -1.005, 1.0049)) 
    return(x) 
    } 

#Shape to similar structure 
data <- list(species1=data_gen(), 
     species2=data_gen(), 
     species3=data_gen(), 
     species4=data_gen()) 

#1.lapply break it up to column 1 == A 
#2.then sapply with a mean then transpose to 1 row 
#3.and finally convert to data.frame 
data_transf <- data.frame(t(sapply(lapply(data, '[[', 1),mean))) 

#Rename columns if necessary 
colnames(data_transf) <- paste0(colnames(data_transf),'_A_isolated_avg') 

data_transf