2016-06-06 2 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 разделить птиц dataframe переменной Species. Тогда вы можете получить доступ к уровню конкретных видов data.frames просто делает вызов, таких как:

res[["BAOR"]] 

    Species 
5 BAOR 
8 BAOR 

Мы можем видеть, что результат на самом деле data.frame по:

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

Прежде всего, спасибо вам за помощь. Моя конечная цель - создать один шейп-файл для каждого вида. Поскольку все они теперь упакованы вместе (res), как это работает? Чтобы было проще, как бы вы пишели файл excel для каждого вида? write.xlsx (Рез, 'S: /Bird_data/Species.xlsx' –