我有一个图片中描述的数据集(http://i.stack.imgur.com/4Xadd.jpg)(sorry我是这个论坛的新手),我想删除那些“Target.section”列的值出现不到4倍的行这种情况将是“NN,HT,IO和BP”。我该怎么做?
非常感谢。
答案 0 :(得分:1)
这将删除列x
中出现次数少于3次的行(因此在此示例中,它将删除x = 12行。不使用任何包。
DF <- data.frame(x = c(1, 1, 1, 12, 12, 3, 3, 3, 3), y = 1:9) # test data
subset(DF, ave(seq_along(x), x, FUN = length) >= 3)
这将删除少于3次出现x和y的行(因此在此示例中将删除所有行):
subset(DF, ave(seq_along(x), x, y, FUN = length) >= 3)
下次请在问题中提供测试输入和预期输出。
答案 1 :(得分:1)
您可以使用dplyr
,(使用@ G.Grothendieck的数据集)
library(dplyr)
DF %>%
group_by(x) %>%
filter(n() >= 3)
答案 2 :(得分:1)
我们也可以使用data.table
library(data.table)
setDT(DF)[, if(.N >= 3) .SD, by = x]