【发布时间】:2018-06-13 11:03:23
【问题描述】:
我有一个基于博物馆藏品的物种分布数据集。我要做的是列出收集了2个以上物种(因子)的收集镇(因子)。
谢谢!
【问题讨论】:
-
见
tidyversecount()&filter()函数。否则使用table()或提供一些可重现的数据。
我有一个基于博物馆藏品的物种分布数据集。我要做的是列出收集了2个以上物种(因子)的收集镇(因子)。
谢谢!
【问题讨论】:
tidyversecount()&filter()函数。否则使用table()或提供一些可重现的数据。
从三个城市和 20 个物种生成 30 个观测值(标记为数字以便于生成)
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:
使用 plyr 包中的 ddply 计算每个城市的物种观测值,并返回具有多个观测值的观测值
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)
【讨论】: