2011-05-12 27 views
0

下面是第5行我的數據:數據幀被稱爲反轉R中加入兩列(1個因子,1個整數)

Location Transect Species   Count 
    McAbee  M1  Bat Star   35 
    McAbee  M1  Turban Snail  2 
    McAbee  M1  Sun Star   1 
    McAbee  M1  Chiton   1 
    .......... 

我想加入我的物種和在一起計算數據,以便我可以執行方差分析來查看位置和橫斷面之間的差異。我有兩個地點和四個橫斷面。

我認爲tapply()函數是正確的用來加入SpeciesCount在一起,但我無法弄清代碼。

我相信代碼應該是:

inverts$speciescount = tapply(inverts$Species, inverts$Count, ....) 

所以我已經得到了有關如何將兩列合併一些很好的意見,但是,我仍然無法斷面和位置之間的數據進行比較。我不確定如何繼續。我想要做的就是創建一個代碼,其中它是:

Count ~ Transect 
# or 
Count ~ Location 

只有這樣做的問題是計數的數據僅僅是一串數字,它被引用到的物種。有沒有人有什麼建議?

感謝您的幫助

+0

你能詳細說一下你的意思是「加入」嗎? – diliop 2011-05-12 02:04:36

+0

我需要他們在一個列中運行ANOVA。我需要物種和數量都在一起,因爲運行方差分析只計算位置並不能給我正確的結果。 – Nick 2011-05-12 02:22:52

回答

0

如果我正確理解你的問題,爲d爲您data.frame:

newd <- data.frame(d[,c("Location","Transect")],SpeciesCount=paste(d$Species,d$Count)) 
+0

非常感謝您將所有內容整合到一個專欄中。 – Nick 2011-05-12 02:46:52

1

你可以做到這一點無論字符方式:

within(inverts, speciesCount <- paste(Species, Count, sep=":") 

或因子方式:

within(inverts, speciesCount <- Species:factor(Count)) 

由於這是在線性建模的背景下,因子的方式似乎更合適。

0

我認爲你對建模函數的輸入應該是什麼感到困惑。如果模擬計數,將需要再是這樣的:

cfit <- glm(counts ~ transect + location + species, data=inverts, family="poisson") 
anova(cfit) 

如果你想看看有位置種的互動,那麼你可能會檢查這個模型:

cfit2 <- glm(counts ~ transect + location + species, data=inverts, family="poisson") 
anova(cfit2) 

會有可能做線性迴歸,但是你可能會得到像負數一樣的無意義的預測。