【问题标题】:R - Listing the levels of factor 1 that have more than 2 levels of factor 2R - 列出具有超过 2 个因子 2 水平的因子 1 的水平
【发布时间】:2018-06-13 11:03:23
【问题描述】:

我有一个基于博物馆藏品的物种分布数据集。我要做的是列出收集了2个以上物种(因子)的收集镇(因子)。

谢谢!

【问题讨论】:

  • tidyversecount()&filter()函数。否则使用table()或提供一些可重现的数据。

标签: r list factors levels


【解决方案1】:

从三个城市和 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)

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2016-12-24
    相关资源
    最近更新 更多