使用R - 当值重复少于3次时删除行

Cla*_*dia 8 row r dataframe

框架有10行3列

    a   b c
1   1 201 1
2   2 202 1
3   3 203 1
4   4 204 1
5   5 205 4
6   6 206 5
7   7 207 4
8   8 208 4
9   9 209 8
10 10 210 5
Run Code Online (Sandbox Code Playgroud)

我想删除列"c"中相同值重复少于3次的所有行.在这个例子中,我想删除第6,9和10行.(我的真实data.frame有5000行和25列)我试图使用函数rle,但我一直得到错误的解决方案.任何帮助?谢谢!

Eri*_*son 14

约书亚的答案为基础:

Data[Data$c %in% names(which(table(Data$c) > 2)), ]
Run Code Online (Sandbox Code Playgroud)


Jos*_*ich 4

如果我错了,请纠正我,但似乎您想要 c 列中的值出现两次以上的所有行。“重复”让我认为它们需要连续发生,这就是目的rle,但如果这就是您想要做的,您只需要第 1-4 行。

也就是说,下面的代码查找 c 列中的值出现超过 2 次的行。我确信这可以做得更优雅,但它确实有效。

lines <-
"a   b c
1 201 1
2 202 1
3 203 1
4 204 1
5 205 4
6 206 5
7 207 4
8 208 4
9 209 8
10 210 5"
Data <- read.table(con <- textConnection(lines), header=TRUE); close(con)
cVals <- data.frame(table(Data$c))
Rows <- Data$c %in% cVals[cVals$Freq > 2,1]
Data[Rows,]
#  a   b c
#1 1 201 1
#2 2 202 1
#3 3 203 1
#4 4 204 1
#5 5 205 4
#7 7 207 4
#8 8 208 4
Run Code Online (Sandbox Code Playgroud)