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

时间:2016-08-19 14:01:45

标签: r excel

我有一个数据集,我试图分析相同值连续出现的次数。例如(基于以下数据):'值'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 个答案:

答案 0 :(得分: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 :(得分: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

希望这可以解决问题!