如何统计group_id中value从'A'变为'B'的次数?
统计分组内A→B的变化次数
你需要统计每个group_id中value从'A'变为'B'的次数,包括同一组内的多次切换(比如1710组的'A'→'B'→'A'),之前的代码统计的是所有前后不同的变化,无法精准筛选A→B的情况。
解决方案代码
library(dplyr) # 先确保组内数据按时间顺序排列(如果有created_date字段的话) data_processed <- data %>% arrange(group_id, created_date) %>% # 若无created_date,仅保留group_id排序即可,需保证组内顺序符合时间逻辑 group_by(group_id) %>% summarise(a_to_b_changes = sum(value == "B" & lag(value) == "A", na.rm = TRUE)) print(data_processed)
代码逻辑说明
arrange(group_id, created_date):保证每个分组内的记录按时间先后排序,这是准确统计变化的核心前提;group_by(group_id):按分组进行聚合操作;sum(value == "B" & lag(value) == "A", na.rm = TRUE):精准筛选**当前值为'B'且前一个值为'A'**的行,统计这类行的数量。na.rm = TRUE用于忽略每组第一条数据(无前置值会产生NA)。
示例数据运行结果
针对你提供的测试数据,运行后会得到:
# A tibble: 3 × 2 group_id a_to_b_changes <dbl> <int> 1 1234 1 2 4567 0 3 1710 1
内容的提问来源于stack exchange,提问作者ROMS
相关产品推荐
相关产品推荐

