这可能是一个愚蠢的问题,但是如何根据 R 中的字符串列创建新的组 ID? ID的值是任意的。
ID: the column I want to create
Name ID
A09john 1
J43mary 2
B7you 3
A09john 1
J43mary 2
B7you 3
我希望使用如下所示的简单代码,但我不知道该怎么做。谢谢!
df1 %>%
group_by(Name) %>%
mutate(ID = row_number(as.numeric(????)))
最佳答案
这是一种使用 dplyr::cur_group_id()
(当前组标识符)的 tidyverse 方法
library(tidyverse)
d <- data.frame(
Name = c("A09john", "J43mary", "B7you", "A09john", "J43mary", "B7you")
)
new_data <- d |>
dplyr::group_by(Name) |>
dplyr::mutate(ID = dplyr::cur_group_id()) |>
ungroup()
new_data
#> # A tibble: 6 x 2
#> Name ID
#> <chr> <int>
#> 1 A09john 1
#> 2 J43mary 3
#> 3 B7you 2
#> 4 A09john 1
#> 5 J43mary 3
#> 6 B7you 2
# If you want to have the ID based on the order of appearance.
# You have to convert Name to factor first
new_data2 <- d |>
dplyr::mutate(Name = factor(Name, levels = unique(Name))) |>
dplyr::group_by(Name) |>
mutate(ID = dplyr::cur_group_id()) |>
ungroup()
new_data2
#> # A tibble: 6 x 2
#> # Groups: Name [3]
#> Name ID
#> <fct> <int>
#> 1 A09john 1
#> 2 J43mary 2
#> 3 B7you 3
#> 4 A09john 1
#> 5 J43mary 2
#> 6 B7you 3
由 reprex package 于 2022 年 6 月 16 日创建(v2.0.1)
row_number()
不是解决方案,因为它将计算每个组中的行号。
关于r - 根据R中的字符串列创建组ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72651410/