如何删除出现少于x次的数据列中的值?

时间:2016-07-07 13:52:56

标签: r

我有一个图片中描述的数据集(http://i.stack.imgur.com/4Xadd.jpg)(sorry我是这个论坛的新手),我想删除那些“Target.section”列的值出现不到4倍的行这种情况将是“NN,HT,IO和BP”。我该怎么做?

非常感谢。

3 个答案:

答案 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]