我想知道如何根据列中一式三份的外观来对数据进行子集化。
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,]
对不起,如果不清楚,这是我的第一篇文章
答案 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