首页 文章

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

提问于
浏览
0

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

示例数据集

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中解决问题?

2 回答

  • 1

    如上所述 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       A  A atc ccc   3
    2       B  B atc eee   2
    
  • 1

    在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))))
    

    并将其作为数组公式输入(意思是,输入后,按CTRL SHIFT ENTER

    希望这可以解决问题!

相关问题