查找向量中连续收录最多的数字

时间:2019-11-07 14:16:34

标签: r

我有以下向量:

essaie <- "23690,55050,127789,64253,130127,63093,63093,63093,108374,63093,63093"
essaie_z <- c(as.numeric(unlist(strsplit(essaie, ","))))

我想知道哪个数字重复最多,重复多少次。基本上,我想知道:

连续重复次数最多的数字:63093 多少次:3

如何在r中做到这一点?

谢谢

2 个答案:

答案 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"