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

如何在R语言数据框中每次出现FALSE时创建新分组?

解决方案:基于布尔值的分组创建

你需要根据a列中FALSE的出现来划分连续分组——每次新的FALSE开启一个新组,后续的TRUE都归属于当前组。这在R里可以用cumsum()函数轻松实现,下面是具体步骤:

1. 还原测试数据框

先把你的数据框还原出来方便验证:

df <- data.frame(
  a = c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE),
  row.names = 1:11
)

2. 生成目标分组列b

核心逻辑是对a列取反后累计求和:原a列的FALSE(新分组的起点)取反后变为TRUE(对应数值1),TRUE取反后变为FALSE(对应数值0)。cumsum()会逐行累加这些数值,每次遇到原a列的FALSE时,累计值就加1,正好对应新分组的开始;后续的TRUE会保持当前累计值,也就是同一分组。

执行代码:

df$b <- cumsum(!df$a)

3. 验证结果

运行后查看数据框:

print(df)

输出完全符合你的预期:

a b
1  FALSE 1
2   TRUE 1
3   TRUE 1
4  FALSE 2
5   TRUE 2
6   TRUE 2
7   TRUE 2
8  FALSE 3
9   TRUE 3
10  TRUE 3
11  TRUE 3

原理补充

  • !df$a:将原布尔列反转,把分组起点的FALSE转化为可累加的1,普通行的TRUE转化为不影响累加的0
  • cumsum():通过逐行累加,自动生成连续的分组编号,完美匹配你需要的分组逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:53:11