假设我有一个非常简单的数据框:
a <- rep(5,30)
b <- rep(4,80)
d <- rep(7,55)
df <- data.frame(Column = c(a,b,d))
最会是什么generic删除所有出现次数少于 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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)