首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过递增样本编号来分配组ID

通过递增样本编号来分配组ID
EN

Stack Overflow用户
提问于 2021-05-04 12:10:47
回答 1查看 20关注 0票数 0

我有来自记录器的数据,它标识每个组具有连续编号的样本,但原始数据不包括组标识符。因为样本ID == 1,所以可以分辨出新组从哪里开始。

如何赋值分组变量,以便可以使用group_by()进行分组汇总等操作?

代码语言:javascript
运行
复制
df_have <- tribble(
  ~n, ~value,
  1, .1,
  2, .3,
  1, .2,
  2, .4,
  3, .6,
  1, .7
)

df_want <- tribble(
  ~group, ~n, ~value,
  "A", 1, .1,
  "A", 2, .3,
  "B", 1, .2,
  "B", 2, .4,
  "B", 3, .6,
  "C", 1, .7
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-04 12:14:45

将当前行与前一行相减,如果差值小于1,则使用cumsum递增计数器。我们可以使用内置向量LETTERS来分配组名。

代码语言:javascript
运行
复制
library(dplyr)

df_have %>%
  mutate(group = LETTERS[cumsum(n - lag(n, default = first(n)) < 1)])

#     n value group
#  <dbl> <dbl> <chr>
#1     1   0.1 A    
#2     2   0.3 A    
#3     1   0.2 B    
#4     2   0.4 B    
#5     3   0.6 B    
#6     1   0.7 C    

base R中的相同逻辑可以实现为:

代码语言:javascript
运行
复制
transform(df_have, group = LETTERS[cumsum(c(TRUE, diff(n) < 1))])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67378692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档