假设我有以下非常简单的数据框:
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/