选择其中包含多个变量的组

时间:2016-01-07 18:02:58

标签: r dataframe subset

简单的问题。我们假设我有一个如下所示的数据框:

data.frame (species=c(a,a,b,c,c,d),dbh=c(5,4,7,1,3,6))

我想排除物种b和d,因为它们只出现一次,我该怎么做?

1 个答案:

答案 0 :(得分:3)

这可以使用base R或使用其他包来完成。使用data.table,我们将'data.frame'转换为data.tablesetDT(df1)),按'种类'分组,if行数大于1({ {1}}),我们得到Data.table的子集(.N>1

.SD

或者 library(data.table) setDT(df1)[, if(.N>1) .SD, species] ,我们在分组后使用dplyr

filter

也可以使用 library(dplyr) df1 %>% group_by(species) %>% filter(n()>1) 函数base R。我们按“种类”进行分组,得到ave,转换为逻辑向量,length数据集。

subset

或者我们可以使用 df1[with(df1, ave(dbh, species, FUN=length)>1),] 来获取“物种”中元素的频率。找到计数超过1的元素的table,使用names获取逻辑向量,然后像以前一样进行子集化。

%in%