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)
基础 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)
这会产生所需的输出。