我有一个数据框
dat <- data.frame(time = c(24.83,25.24,25.46,25.71,25.78,26.11), key = c("z","f","x","f","f","x"))
看起来像这样:
time key
24.83 z
25.24 f
25.46 x
25.71 f
25.78 f
26.11 x
我想找到&#39; key&#39;的所有实例。两个后续行中相同(例如&#39; f&#39;此处)并删除第二行。
我看着?重复且独特但仍然不知道如何将其用于此目的。
答案 0 :(得分:2)
duplicated
和unique
可能不是最佳选择 - 默认情况下会删除所有后续重复项。
相反,您可以使用rle
,如下所示:
> dat[sequence(rle(as.character(dat$key))$lengths) == 1, ]
time key
1 24.83 z
2 25.24 f
3 25.46 x
4 25.71 f
6 26.11 x
rle
返回list
项,其中包含两项:lengths
(表示运行长度)和values
。
答案 1 :(得分:1)
这是一个diff
有效的解决方案:
dat[-(which(diff(as.numeric(dat$key))==0)+1),]
time key
1 24.83 z
2 25.24 f
3 25.46 x
4 25.71 f
6 26.11 x