r - 包含唯一值数字的列

标签 r unique dplyr

我在 R studio 中有一个小标题,看起来像 this我需要添加一列,为每个名称提供相同的唯一编号。所以它应该看起来像 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,它可以是匹配

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

或者将因子强制为整数

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

关于r - 包含唯一值数字的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64146764/

相关文章:

r - 我可以使用 R 中的 DBI 库将一个 SQLite 数据库附加到另一个数据库吗?

mysql - 嵌套选择。需要将结果限制为每个特定列值一个

c# - 从数据表中的数据列中选择唯一值?

r - 过滤向量的非零元素的管道/dplyr友好方式

r - 跨多个数据帧更改列的类别

r - 使用sparklyr::spark_read_json时添加文件名

r - R:rvest-共享计数器,xpath

r - 滞后回归

r - tidyR 从长到宽的数据?

javascript - 使用javascript生成客户端指纹