首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按r中的共享值分组案例

按r中的共享值分组案例
EN

Stack Overflow用户
提问于 2017-10-03 00:14:02
回答 2查看 327关注 0票数 0

我有这样的数据集:

代码语言:javascript
复制
    case x y 
      1  4 5  
      2  4 5  
      3  8 9 
      4  7 9
      5  6 3
      6  6 3

我想创建一个分组变量。当x和y都相同时,这个变量应该有相同的值。我不在乎这个价值是什么,但它是分组他们。因为在我的数据集中,如果x和y在两种情况下是相同的,它们可能是同一个组织的一部分。我想看看有哪些组织。

因此,我喜欢的数据集如下所示:

代码语言:javascript
复制
    case x y org
      1  4 5  1
      2  4 5  1
      3  8 9  2
      4  7 9  3
      5  6 3  4 
      6  6 3  4

我要怎么用R来编程呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-03 00:18:46

来自dplyr的使用group_indices的解决方案。

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

dt2 <- dt %>%
  mutate(org = group_indices(., x, y))

dt2
  case x y org
1    1 4 5   1
2    2 4 5   1
3    3 8 9   4
4    4 7 9   3
5    5 6 3   2
6    6 6 3   2

如果组号需要按顺序排列,我们可以在创建rleid列之后使用data.table包中的org,如下所示。

代码语言:javascript
复制
library(dplyr)
library(data.table)

dt2 <- dt %>%
  mutate(org = group_indices(., x, y)) %>%
  mutate(org = rleid(org))
dt2
  case x y org
1    1 4 5   1
2    2 4 5   1
3    3 8 9   2
4    4 7 9   3
5    5 6 3   4
6    6 6 3   4

更新

下面是如何排列dplyr中的列。

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

dt %>%
  arrange(x)
  case x y
1    1 4 5
2    2 4 5
3    5 6 3
4    6 6 3
5    4 7 9
6    3 8 9

我们还可以对多个列(如arrange(x, y) )执行此操作,也可以使用desc来反转oder,如arrange(desc(x))

数据

代码语言:javascript
复制
dt <- read.table(text = " case x y 
      1  4 5  
                 2  4 5  
                 3  8 9 
                 4  7 9
                 5  6 3
                 6  6 3",
                 header = TRUE)
票数 1
EN

Stack Overflow用户

发布于 2017-10-03 00:26:22

正如您所说的,--我不在乎这个值是什么--,您只需执行以下操作

代码语言:javascript
复制
dt$new=as.numeric(as.factor(paste(dt$x,dt$y)))
dt
  case x y new
1    1 4 5   1
2    2 4 5   1
3    3 8 9   4
4    4 7 9   3
5    5 6 3   2
6    6 6 3   2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46535439

复制
相关文章

相似问题

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