删除数据框中不常见的行

标签 r dataframe frequency

假设我有以下非常简单的数据框:

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

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

什么是最通用 删除值出现次数少于 60 次的所有行的方法?

我知道你可以说“在这种情况下它只是一个”,但在我的真实数据中还有更多的频率,所以我不想一一指定它们。

我正在考虑编写一个循环,如果“i”的 length() 小于 60,这些行将被删除,但也许您有其他想法。提前致谢。

最佳答案

使用 dplyr 的解决方案.

library(dplyr)

df2 <- df %>%
  group_by(Column) %>%
  filter(n() >= 60)

或者来自基础 R 的解决方案
uniqueID <- unique(df$Column)
targetID <- sapply(split(df, df$Column), function(x) nrow(x) >= 60)

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

关于删除数据框中不常见的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282359/

相关文章:

r - data.table 中的条件连接?

python - 用 Pandas Series 中的元素填充 Pandas DataFrame 的对角线

c - 试图找到字符串中某些字符的频率,但结果相去甚远

matlab - 使用 Matlab FFT 从 EEG 信号中提取频率

r - 用于可重复研究的自动化文本

r - tryCatch :Error not caught

r - 结合 geom_boxplot 和 geom_line

python-3.x - 根据其他列中的匹配项填充 `Pandas.DataFrame` 中的列

mysql - Perl & MySQL - 如何从表中的列中获取前 100 个最常用字段(包含数字)?

r - 将 stargazer 与内存贪婪的 glm 对象一起使用