R - Перечисление уровней фактора 1, которые имеют более 2 уровней фактора 2 - PullRequest
0 голосов
/ 13 июня 2018

У меня есть набор данных о распределении видов, основанный на музейных коллекциях.То, что я хочу сделать, это перечислить города сбора (фактор), где было собрано более 2 видов (фактор).

Спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Генерация 30 наблюдений из трех городов и 20 видов (помеченных как числа для простоты генерации)

df <- data.frame( city=as.factor( rep(c('NY', 'CH', 'LA'),10) ),
                  species=as.factor( sample(1:20, 30, replace=T) )
                ) 

просмотр данных

table(df$city, df$species)

Использование plyr :

подсчитайте наблюдения для видов в каждом городе, используя ddply из пакета plyr, и верните наблюдения с более чем одним наблюдением

ddply(df, .(city), .fun=function(x){
  counts <- count(x$species)
  counts[counts$freq > 1,]
})

, в результате чего

  city  x freq
1   CH 10    3
2   CH 12    2
3   LA  9    2
4   NY  1    2
5   NY 13    3

где x - вид, а freq - количество наблюдений вида в городе.

Использование dplyr :

df %>% 
  group_by(city) %>% 
  select(species) %>% 
  count() %>% 
  filter(freq>1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...