通过 R 中的唯一行对数据框进行编号

问题描述 投票:0回答:1

我在 R 中有一个这样的数据框:

data.frame('first' = c('A','A','B','C','A','B'),
           'second' = c(1,2,1,1,1,1),
           'third' = c(1,2,1,1,1,3))

  first second third
1     A      1     1
2     A      2     2
3     B      1     1
4     C      1     1
5     A      1     1
6     B      1     3
7     B      2     1

第一列中的每个字母我想对该行进行编号。对于每个唯一的第二列和第三列,如果已经注意到第一列,则数字会增加。如果第一列发生变化,它将转到另一个编号顺序。所以最终会是这样的:

  first second third group
1     A      1     1     1
2     A      2     2     2
3     B      1     1     1
4     C      1     1     1
5     A      1     1     1
6     B      1     3     2
7     B      2     1     3

列可以用整数或字符串填充。我尝试将它们分组,但这并不符合我想要的方式。

r tidyverse
1个回答
0
投票

如果您

paste
将第二列和第三列放在一起,则
group
将是由结果字符串组成的因子变量的数值(如果按第一列分组)

df <- data.frame(first = c("A", "A", "B", "C", "A", "B", "B"), 
                 second = c(1L, 2L, 1L, 1L, 1L, 1L, 2L), 
                 third = c(1L, 2L,  1L, 1L, 1L, 3L, 1L))

library(tidyverse)

df %>%
  mutate(group = as.numeric(factor(paste(second, third))), .by = first)
#>   first second third group
#> 1     A      1     1     1
#> 2     A      2     2     2
#> 3     B      1     1     1
#> 4     C      1     1     1
#> 5     A      1     1     1
#> 6     B      1     3     2
#> 7     B      2     1     3
© www.soinside.com 2019 - 2024. All rights reserved.