如何解决带数字的列,表示唯一值
我在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
,它可以是match
df1 %>%
mutate(NameID = match(Name,unique(Name)))
或将factor
强制为integer
df1 %>%
mutate(NameID = as.integer(factor(Name,levels = unique(Name))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。