删除连续的重复条目

anu*_*anu 6 r duplicates with-statement

如何删除R中的连续重复条目?我认为with可能会被使用,但无法思考如何使用它.举例说明:

read.table(text = "
   a        t1
   b        t2
   b        t3
   b        t4
   c        t5
   c        t6
   b        t7
   d        t8")
Run Code Online (Sandbox Code Playgroud)

样本数据:D

    events    time
       a        t1
       b        t2
       b        t3
       b        t4
       c        t5
       c        t6
       b        t7
       d        t8
Run Code Online (Sandbox Code Playgroud)

要求结果:

     events     time
       a        t1
       b        t4
       c        t6
       b        t7
       d        t8
Run Code Online (Sandbox Code Playgroud)

`

joh*_*nes 12

还有一个,假设你data.frmae的名字是d:

d[cumsum(rle(as.numeric(d[,1]))$lengths),]
  V1 V2
1  a t1
4  b t4
6  c t6
7  b t7
8  d t8
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 0

基础 R 中使用 split-apply-combine 的解决方案通过tail返回最后一个元素的函数来工作,并rle结合mapply创建一个新的向量,events该向量在事件重新出现的情况下保留顺序:

x <- read.table(text = "    events    time
       a        t1
       b        t2
       b        t3
       b        t4
       c        t5
       c        t6
       b        t7
       d        t8", header = TRUE)


# create vector of new.events (i.e., preserve reappearing objects)
occurences <- rle(as.character(x$events))[["lengths"]]
new.events <- unlist(mapply(rep, x = letters[seq_along(occurences)], times = occurences))

# split into sublists per event
s1 <- split(x, list(new.events))

# get last element from list
s2 <- lapply(s1, tail, n = 1)

# combine again
do.call(rbind, s2)
Run Code Online (Sandbox Code Playgroud)

这会产生所需的输出。