gpt4 book ai didi

r - 如何在tibble列中找到最长的重复序列?

转载 作者:行者123 更新时间:2023-12-04 11:01:55 26 4
gpt4 key购买 nike

我更新了我的问题,因为我的输出表还需要一列。

我有以下小标题:

library(tibble)

my_tbl <- tribble(
~year, ~event_id, ~winner_id,
2011, "A", 4322,
2012, "A", 4322,
2013, "A", 4322,
2014, "A", 5478,
2015, "A", 4322,
2011, "B", 4322,
2012, "B", 7893,
2013, "B", 7893,
2014, "B", 2365,
2015, "B", 3407,
2011, "C", 5556,
2012, "C", 5556,
2013, "C", 1238,
2014, "C", 2391,
2015, "C", 2391,
2011, "D", 4219,
2012, "D", 7623,
2013, "D", 8003,
2014, "D", 2851,
2015, "D", 0418
)

我想通过事件 ID 找出连续获胜次数最多的一次。我正在寻找的结果如下所示:

results_summary_tbl <- tribble(
~event_id, ~most_wins_in_a_row, ~number_of_winners, ~winners, ~years,
"A", 3, 1, "4322", "4322 = (2011, 2012, 2013)",
"C", 2, 2, "5556, 2391", "5556 = (2011, 2012), 2391 = (2014, 2015)",
"B", 2, 1, "7893", "7893 = (2012, 2013)",
"D", 1, 5, "4219, 7623, 8003, 2851, 0418", "4219 = (2011), 7623 = (2012), 8003 = (2013), 2851 = (2015), (2018), ”
)

谢谢

最佳答案

dplyr选项可以是:

my_tbl %>%
add_count(event_id, rleid = cumsum(winner_id != lag(winner_id, default = first(winner_id)))) %>%
group_by(event_id) %>%
summarise(most_wins_in_a_row = max(n),
number_of_winners = n_distinct(winner_id[n == max(n)]),
winners = paste0(unique(winner_id[n == max(n)]), collapse = ","))

event_id most_wins_in_a_row number_of_winners winners
<chr> <int> <int> <chr>
1 A 3 1 4322
2 B 2 1 7893
3 C 2 2 5556,2391
4 D 1 5 4219,7623,8003,2851,418

关于r - 如何在tibble列中找到最长的重复序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com