如何在R中为重复临床医生分配唯一字母以匿名化数据集
R中为重复医生姓名分配唯一字母ID的方法
以下是两种实现需求的方法,均能让同一医生姓名对应相同的字母:
基础R原生实现
利用因子的编码特性,直接将唯一姓名映射到字母:
DF$letter <- letters[as.factor(DF$ProviderID)]
运行后,DF会新增letter列,其中首次出现的Harry Potter对应a,Hermione Granger对应b,Ron Weasley对应c,重复出现的姓名会沿用已分配的字母。
tidyverse(dplyr)实现
如果习惯使用tidyverse生态的语法,可通过分组分配组ID来实现:
library(dplyr) DF <- DF %>% group_by(ProviderID) %>% mutate(letter = letters[cur_group_id()]) %>% ungroup()
group_by(ProviderID)按医生姓名分组,cur_group_id()为每个组生成唯一编号,再通过letters向量映射为对应字母。
内容的提问来源于stack exchange,提问作者EtoiledeMoyenOrient
相关产品推荐
相关产品推荐

