如何计算相同的值在R或Excel中连续出现的次数?

我有一个数据集,我试图分析相同的值连续出现多less次。 例如(基于以下数据):'1'从1/1 / 2000-1 / 3/2000'连续出现3次'

示例数据集

date, value 1/1/2000,1 1/2/2000,1 1/3/2000,1 1/4/2000,3 1/5/2000,3 1/6/2000,1 1/7/2000,3 1/8/2000,3 1/9/2000,3 1/10/2000,3 

R或Excel应该如何处理这个问题?

如上所述, rle()将计算运行长度。 然后可以使用aggregate()来获取每个分组因子的最大运行长度。

 df <- structure(list(id = c("A", "A", "A", "B", "B"), var = c("atc", "atc", "atc", "atc", "atc"), val = c("aaa", "bbb", "ccc", "aaa", "eee")), .Names = c("id","var", "val"), class = "data.frame", row.names = c(NA, -5L)) # var and val are nonsense columns for padding # How many times does each id appear sequentially? df$run <- sequence(rle(df$id)$lengths) df id var val run 1 A atc aaa 1 2 A atc bbb 2 3 A atc ccc 3 4 B atc aaa 1 5 B atc eee 2 aggregate(df, by = list(df$id), FUN = max) Group.1 id var val run 1 AA atc ccc 3 2 BB atc eee 2 

在Excel中,这可以通过数组公式完成。

假设你的值在列B中,比如在B2:B31的范围内,你想检查的值在单元格E3 ,你可以使用下面的公式:

 =MAX(FREQUENCY(IF($B$2:$B$31=E3,ROW($B$2:$B$31)),IF($B$2:$B$31<>E3,ROW($B$2:$B$31)))) 

并input它作为数组公式(意思是,一旦input,按CTRL + SHIFT + ENTER

希望这个窍门!