我在 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 function
或ifelse
,但我真的不知道正确的语法应该是什么。
抱歉格式问题,这是我第一次在这里提问,我需要学习更好地写东西
最佳答案
使用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/