简单的问题。我们假设我有一个如下所示的数据框:
data.frame (species=c(a,a,b,c,c,d),dbh=c(5,4,7,1,3,6))
我想排除物种b和d,因为它们只出现一次,我该怎么做?
答案 0 :(得分:3)
这可以使用base R
或使用其他包来完成。使用data.table
,我们将'data.frame'转换为data.table
(setDT(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%