我有一个数据集,我试图分析相同值连续出现的次数。例如(基于以下数据):'值'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中解决问题?
答案 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
希望这可以解决问题!