带有唯一值数字的列

Column with numbers for unique values

我在 R studio 中有一个 tibble,看起来像 this And I need to add a column that gives to each name the same unique number. So it should look like this

我已经尝试过如下代码:

people >%>
gorup_by(Name) >%>
mutate(NameID = seq(1, along.with = unique(Name))) >%>
ungroup()

此代码为所有列提供了相同的编号。所以它给了我每个 NameID 的数字 1。

我也试过下面的代码:

people >%>
gorup_by(Name) >%>
mutate(NameID = seq(1, length(unique(Name)))) >%>
ungroup()

我得到了同样的结果。我认为我可能需要使用 if functionifelse,但我真的不知道正确的语法应该是什么。

格式不好,我是第一次在这里提问,我需要学会更好地写东西

有了dplyr 1.0.0,我们可以使用cur_group_id

library(dplyr)
df1 %>%
   group_by(Name = factor(Name, levels = unique(Name))) %>%
   mutate(NameID = cur_group_id())

或者不用group_by,也可以是match

df1 %>%
   mutate(NameID = match(Name, unique(Name)))

或将 factor 强制为 integer

df1 %>%
    mutate(NameID = as.integer(factor(Name, levels = unique(Name))))