首页 > 解决方案 > 具有唯一值数字的列

问题描述

我在 R 工作室中有一个看起来像这样的小标题,我需要添加一个列,为每个名称提供相同的唯一编号。所以它应该看起来像这样

我已经尝试过类似下面的代码:

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 functionor ifelse,但我真的不知道正确的语法应该是什么。

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

标签: runiquedplyr

解决方案


使用dplyr1.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))))

推荐阅读