You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:32:45