Генерация 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)