R语言 在组中创建行标识符

wqlqzqxt  于 2023-06-27  发布在  其他
关注(0)|答案(2)|浏览(113)

我有以下形式的数据。有一百多万行。我只想创建另一列,它可以帮助我识别分组的Item 3的行。前两列无关紧要。只是为了让我知道我在数据集中还有其他列。我使用了cumsum和group_indices,但是没有用。
| 项目1|项目2|项目3|
| - -----|- -----|- -----|
| 一个|两个|一个|
| 一个|两个|一个|
| 一个|两个|一个|
| 一个|两个|B|
| 一个|两个|B|
| 一个|两个|C类|
| 项目1|项目2|项目3|标识符|
| - -----|- -----|- -----|- -----|
| 一个|两个|一个|一个|
| 一个|两个|一个|2|
| 一个|两个|一个|三个|
| 一个|两个|B|一个|
| 一个|两个|B| 2|
| 一个|两个|C类|一个|

mw3dktmi

mw3dktmi1#

library(tidyverse)

data <- tibble(
  Item1 = c("One", "One", "One", "One", "One", "One"),
  Item2 = c("Two", "Two", "Two", "Two", "Two", "Two"),
  Item3 = c("A", "A", "A", "B", "B", "C")
)

data %>% 
  mutate(ID = row_number(), .by = Item3))

  Item1 Item2 Item3     ID
  <chr> <chr> <chr> <int>
1 One   Two   A         1
2 One   Two   A         2
3 One   Two   A         3
4 One   Two   B         1
5 One   Two   B         2
6 One   Two   C         1

感谢.by = Item3的想法😃

jyztefdp

jyztefdp2#

基础解决方案

ave(integer(nrow(data)), data$Item3, FUN = seq_along)

data.table解决方案

library(data.table)
setDT(data)[, ID := rowidv(Item3)]

数据

structure(list(Item1 = c("One", "One", "One", "One", "One", "One"
), Item2 = c("Two", "Two", "Two", "Two", "Two", "Two"), Item3 = c("A", 
"A", "A", "B", "B", "C")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))

相关问题