2016-06-06 109 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' –

相关问题