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

如何在dplyr中实现按分组的数值条件替换操作

实现方案

核心思路是按type分组后,利用累积判断函数cumany()标记出首次出现count为0之后的所有行,统一将这些行的count替换为0即可。

完整代码

首先加载dplyr包:

library(dplyr)

执行数据处理:

# 原始数据
df <- data.frame(time=c(1,2,3,4,1,2,3,4,5), 
                 type=c("A","A","A","A","B","B","B","B","B"), 
                 count=c(10,0,0,1,8,0,1,0,1))

df_result <- df %>%
  group_by(type) %>%
  arrange(time, .by_group = TRUE) %>% # 保证分组内时间按升序排列,兼容原数据顺序混乱的场景,若原数据已按时间排序可省略此行
  mutate(count = if_else(cumany(count == 0), 0, count)) %>%
  ungroup()

结果验证

打印df_result即可得到期望输出:

# A tibble: 9 × 3
   time type  count
  <dbl> <chr> <dbl>
1     1 A        10
2     2 A         0
3     3 A         0
4     4 A         0
5     1 B         8
6     2 B         0
7     3 B         0
8     4 B         0
9     5 B         0

内容的提问来源于stack exchange,提问作者LDT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:27:02