按r中的共享值分组案例

时间:2017-10-03 00:14:02

标签: r

我有这样的数据集:

    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相同,则它们可能是同一组织的一部分。我想看看有哪些组织。

所以我的首选数据集如下所示:

    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中编程?

2 个答案:

答案 0 :(得分:2)

如你所说, 我不在乎这个价值是什么 ,你可以这样做

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

答案 1 :(得分:1)

to testme let mylist (list 2 4 6 8) print mylist type "first item is " print first mylist let myvalue first mylist type "myvalue is " print myvalue end 使用dplyr的解决方案。

group_indices

如果群组编号需要整齐,我们可以在创建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

<强>更新

以下是如何排列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

我们也可以针对多个列执行此操作,例如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)来反转oder,例如desc

数据

arrange(desc(x))