参考这个问题:R -删除连续(ONLY)重复我使用相同的公式:
df[c(df$x[-1] != df$x[-nrow(df)],TRUE),]
但是我只有最后一个值,我想要第一个,我怎么能改变这一点?谢谢你!
这里有几个选项。
首先,您可以使用rle
来获取连续值的索引。若要在一系列连续数字中保留第一个值,则从索引为1开始,将其他索引累加。
lens <- rle(df$x)$lengths
df[cumsum(c(1, lens[-length(lens)])), ]
作为一种选择,使用tidyverse
,您可以在x
中按行创建不同的组。您可以保留每组中的第一个值。
library(dplyr)
df %>%
group_by(grp = c(T, diff(x) != 0)) %>%
filter(grp) %>%
ungroup %>%
select(-grp)
对于data.table
,您可以使用rleid
(生成运行长度类型组id的函数)。副本为FALSE
。保留不是的行。FALSE
允许在重复中保留第一行。
library(data.table)
setDT(df)[!duplicated(rleid(x))]