R 删除每个级别的观测值小于5的系数列

R 删除每个级别的观测值小于5的系数列,r,dataframe,data-handling,R,Dataframe,Data Handling,我有一个由100多列组成的数据集,所有列都是factor类型。例: animal fruit vehicle color cat orange car blue dog apple bus

我有一个由100多列组成的数据集,所有列都是factor类型。例:

          animal               fruit               vehicle              color 
             cat              orange                   car               blue 
             dog               apple                   bus              green 
             dog               apple                   car              green 
             dog              orange                   bus              green

在我的数据集中,我需要删除所有包含因子的列,因为每个级别的观测值少于5个。在本例中,如果我要删除每个级别的观察量小于或等于
1
的所有列,如
blue
cat
,则算法将删除
animal
color
列。最优雅的方法是什么?

我们可以使用
过滤器
表格

Filter(function(x) !any(table(x) < 2), df1)
#  fruit vehicle
#1 orange     car
#2  apple     bus
#3  apple     car
#4 orange     bus
过滤器(函数(x)!任意(表(x)<2),df1)
#水果车
#1辆橙色轿车
#2苹果巴士
#3苹果汽车
#4辆橙色巴士
数据
df1我们可以使用
select\u if
from
dplyr

library(dplyr)
df1 %>% select_if(~all(table(.) > 1))

#   fruit vehicle
#1 orange     car
#2  apple     bus
#3  apple     car
#4 orange     bus

在本例中,所有列均显示2个唯一值
library(dplyr)
df1 %>% select_if(~all(table(.) > 1))

#   fruit vehicle
#1 orange     car
#2  apple     bus
#3  apple     car
#4 orange     bus