R语言中如何为重复作者名分配相同的AuthorId
没问题,我来帮你搞定这个需求!你要的是让重复的作者名对应同一个AuthorId,同时保留所有行记录对吧?这里有两种简洁的实现方法:
方法1:使用dplyr包(推荐,和你用到的tibble生态一致)
如果你已经在使用tibble,那用dplyr的mutate函数配合因子转换会非常顺手:
library(dplyr) # 假设你的数据框是df,作者列名为Author df <- df %>% mutate(AuthorId = as.integer(factor(Author, levels = unique(Author))))
- 原理:
factor()会把每个唯一的作者名映射为一个独立的水平,as.integer()将这些水平转换为整数ID - 如果希望ID按照作者名首次出现的顺序分配,就保留
levels = unique(Author)参数;如果想按字母顺序分配,直接去掉这个参数即可
方法2:Base R实现(无需额外安装包)
如果你不想加载额外的包,用Base R的match()函数也能轻松实现:
# 给数据框添加AuthorId列 df$AuthorId <- match(df$Author, unique(df$Author))
- 原理:
match()会返回每个作者名在unique(df$Author)中的位置索引,重复的作者名自然会得到相同的索引值,也就是相同的AuthorId
这两种方法都不会删除任何行记录,完美满足你“重复作者名对应相同ID”的需求~
内容的提问来源于stack exchange,提问作者chris Prince
相关产品推荐
相关产品推荐

