首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个具有多个组的dataframe中创建唯一组id

在一个具有多个组的dataframe中创建唯一组id
EN

Stack Overflow用户
提问于 2018-10-25 16:48:40
回答 2查看 27关注 0票数 1

我有个数据:

代码语言:javascript
运行
复制
y <- c(3, 3, 3, 2, 2, 2, 2, 1, 1, 2)
z <- c(1, 1, 1, 2, 2, 3, 3, 3, 4, 4)

df <- data.frame(y, z)

> df
   y z
1  3 1
2  3 1
3  3 1
4  2 2
5  2 2
6  2 3
7  2 3
8  1 3
9  1 4
10 2 4

现在我想要创建一个组id。这些组是基于y的,应该从1编号到n。重复数y指的是一个组。另外,这些群是基于z嵌套在其他群中的,因此,如果y在z处处于不同的群中,则y的等号表示不同的群,这意味着:y有6个群,对于z4群。其结果应是:

代码语言:javascript
运行
复制
> df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6

任何帮助我都很高兴。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 17:00:10

您可以从rleid包中使用data.table -

代码语言:javascript
运行
复制
df$group_id <- data.table::rleid(paste(df$y, df$z))
df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6
票数 1
EN

Stack Overflow用户

发布于 2018-10-25 17:00:54

我们可以使用来自rleiddata.table

代码语言:javascript
运行
复制
library(data.table)
setDT(df)[, group_id := rleid(y, z)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52994372

复制
相关文章

相似问题

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