提问人:Aman 提问时间:6/23/2023 更新时间:6/23/2023 访问量:55
在组中创建行标识符
Creating row identifier within a group
问:
我有以下形式的数据。有超过一百万行。我只想创建另一列来帮助我识别分组的 Item3 的行。前两列无关紧要。刚刚添加,让我知道我在数据集中还有其他列。我使用了 cumsum 和 group_indices但没有用。
项目1 | 项目2 | 项目3 |
---|---|---|
一 | 二 | 一个 |
一 | 二 | 一个 |
一 | 二 | 一个 |
一 | 二 | B |
一 | 二 | B |
一 | 二 | C |
项目1 | 项目2 | 项目3 | 标识符 |
---|---|---|---|
一 | 二 | 一个 | 1 |
一 | 二 | 一个 | 2 |
一 | 二 | 一个 | 3 |
一 | 二 | B | 1 |
一 | 二 | B | 2 |
一 | 二 | C | 1 |
答:
1赞
Mark
6/23/2023
#1
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
感谢 Chamkrai 的想法 😃.by = Item3
评论
0赞
Chamkrai
6/23/2023
请添加到您所需的库中。dplyr
0赞
Mark
6/23/2023
..............做!
1赞
Chamkrai
6/23/2023
好!顺便说一句 - 您可以在新更新后立即跳过group_by()
data %>% mutate(ID = row_number(), .by = Item3)
0赞
Mark
6/23/2023
好!我不知道🤓你每天都能学到新东西
0赞
NicChr
6/23/2023
#2
基本解决方案
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))
评论
library(data.table); dt$Identifier <- rowid(dt$Item3)
dplyr
group_by(df, Item1, Item2, Item3) %>% mutate(Identifier=1:n())