如何按三次重复对列进行子集化?

时间:2017-08-02 23:43:15

标签: r

我想知道如何根据列中一式三份的外观来对数据进行子集化。

t <- c(1,1,2,2,3,3,4,4,5,5,5,6,6,7,7,7,8,8)

mydf <- data.frame(t, 1:18)

我希望能够只抓取与t列中的三重对应的行,这样我才能形成仅包含那些行的新数据帧。这看起来像这样,其中p是我正在寻找的行的向量:

p <- c(9,10,11,14,15,16)

myidealdf[p,]

对不起,如果不清楚,这是我的第一篇文章

2 个答案:

答案 0 :(得分:3)

这应该这样做

keeps <- unique(t)[table(as.factor(t)) == 3]
keeps <- t %in% keeps
mydf <- mydf[keeps, ]

答案 1 :(得分:0)

使用rle功能。

which(t %in% with(rle(t), values[lengths==3]))
[1]  9 10 11 14 15 16