2016-06-06 129 views
-1

測量員提交他們在一個季節捕獲的所有鳥類物種。我想將它們的捕獲子集,因此每個物種都是他們自己的數據框。我可以寫出各個物種,比如我在下面最後一行所做的。但我想要比這更光滑,而不必爲整個300種可能的物種通過。選項?根據列表對數據集進行子集

Birds <-c() 
Birds$Species <-c("REVI","SCTA","REVI","KIWA","BAOR","MAWA","MAWA","BAOR") 
Birds <- as.data.frame(Birds) 
sp <- unique(Birds$Species) 
REVI <- subset(Birds,Species=="REVI") 

謝謝。

+0

請參見'幫助(分)',並給出示例數據給出所需的結果。 –

回答

1

正如@Richard Scriven指出的那樣,您可以使用split來輕鬆完成此操作。這應該工作:

res<-split(Birds,Birds$Species) 

我們告訴R拆分Birds數據框的Species變量。

res[["BAOR"]] 

    Species 
5 BAOR 
8 BAOR 

我們可以看到的結果,其實是data.frame通過:然後你就可以通過簡單地做一個調用,如訪問特定的物種水平data.frames

class(res[["BAOR"]]) 
[1] "data.frame" 
+0

首先,謝謝你的幫助。我的最終目標是爲每個物種創建一個shapefile。由於這些都是現在一起打包(res),這是如何工作的?爲了簡單起見,你將如何爲每個物種編寫一個excel文件? write.xlsx(RES, 'S:/Bird_data/Species.xlsx' –

相關問題