我在R演播室里有一个类似于这的tibble,我需要添加一个列,给每个名字指定相同的唯一编号。所以它应该看起来像这
我已经尝试了如下代码:
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,但是我真的不知道什么应该是正确的语法。
对格式表示抱歉,这是我第一次在这里提出问题,我需要学习如何更好地编写
发布于 2020-09-30 22:48:28
使用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))))https://stackoverflow.com/questions/64146764
复制相似问题