我有以下向量:
essaie <- "23690,55050,127789,64253,130127,63093,63093,63093,108374,63093,63093"
essaie_z <- c(as.numeric(unlist(strsplit(essaie, ","))))
我想知道哪个数字重复最多,重复多少次。基本上,我想知道:
连续重复次数最多的数字:63093 多少次:3
如何在r中做到这一点?
谢谢
答案 0 :(得分:4)
您可以使用函数rle:
runs <- rle(essaie_z)
max(runs$lengths)
# [1] 3
runs$values[which.max(runs$lengths)]
# [1] 63093
说明rle
代表run length encoding。它报告数据中的运行以及这些运行的长度,并以列表形式返回结果:
> rle(essaie_z)
Run Length Encoding
lengths: int [1:8] 1 1 1 1 1 3 1 2
values : num [1:8] 23690 55050 127789 64253 130127 63093 108374 63093
您要的是与最长运行时间相对应的值。
答案 1 :(得分:1)
这是另一种选择,
i1 <- strsplit(essaie, ',')[[1]]
l1 <- split(i1, cumsum(c(TRUE, diff(as.numeric(i1)) != 0)))
l1[which.max(lengths(l1))]
#$`6`
#[1] "63093" "63093" "63093"
并获取长度,
length(l1[which.max(lengths(l1))][[1]])
#[1] 3
不确定要如何输出。
paste0('value: ', unique(l1[which.max(lengths(l1))][[1]]), ', Repetition: ', length(l1[which.max(lengths(l1))][[1]]))
#[1] "value: 63093, Repetition: 3"