R 删除数据帧中不常用的行

R 删除数据帧中不常用的行,r,dataframe,frequency,R,Dataframe,Frequency,假设我有一个非常简单的数据框: a <- rep(5,30) b <- rep(4,80) d <- rep(7,55) df <- data.frame(Column = c(a,b,d)) a我们创建一个频率表,然后根据“列”中值的“计数”创建子集 tbl <- table(df$Column) >=60 subset(df, Column %in% names(tbl)[tbl]) 或者我们使用data.table library(data.ta

假设我有一个非常简单的数据框:

a <- rep(5,30)
b <- rep(4,80)
d <- rep(7,55)

df <- data.frame(Column = c(a,b,d))

a我们创建一个频率
,然后根据“列”中值的“计数”创建子集

tbl <- table(df$Column) >=60
subset(df, Column %in% names(tbl)[tbl])

或者我们使用
data.table

library(data.table)
setDT(df)[, .SD[.N >= 60], Column]
library(data.table)
setDT(df)

df[Column %in% df[, .N, by = Column][N >= 60, Column]]
或者另一个带有
数据的选项。表
.I

setDT(df)[df[, .I[.N >=60], Column]$V1]

使用
dplyr
的解决方案

library(dplyr)

df2 <- df %>%
  group_by(Column) %>%
  filter(n() >= 60)
库(dplyr)
df2%
分组依据(列)%>%
过滤器(n()>=60)
或者是来自BaseR的解决方案

uniqueID <- unique(df$Column)
targetID <- sapply(split(df, df$Column), function(x) nrow(x) >= 60)

df2 <- df[df$Column %in% uniqueID[targetID], , drop = FALSE]

uniqueID使用
data.table

library(data.table)
setDT(df)[, .SD[.N >= 60], Column]
library(data.table)
setDT(df)

df[Column %in% df[, .N, by = Column][N >= 60, Column]]

还有一个变量要回答,它使用联接而不是%
%中的
%:

library(data.table)
setDT(df)
df[df[, .N, by = Column][N >= 60, .(Column)], on = "Column"]

有什么理由让这些数据保持为单独的行,而不是按每个值折叠成一行(带有“count”列)?这一点很好,但事实上,我需要以这种方式聚合数据