R语言中如何为数据框重复人名添加序号后缀实现唯一标识
R语言重复人名添加序号后缀解决方案
报错原因
make.unique函数要求输入参数为字符向量,你直接传入了整个数据框,因此触发类型错误。此外原生make.unique默认仅从第二个重复项开始加_1后缀,不符合你要求的第一个重复项就加_1的规则,可通过以下方案实现需求:
实现代码
方案1:基础R实现(无需加载额外包)
Data_I_Have <- data.frame( "Person" = c("John", "John", "John", "Peter", "Peter", "Peter", "Tim", "Kevin", "Adam", "Adam", "Xavier"), "Number_of_Kids" = c("4", "1", "1", "5", "2", "3", "7", "0", "3", "3", "5") ) Data_I_Have$Person <- ave(Data_I_Have$Person, Data_I_Have$Person, FUN = function(x) { n <- length(x) if (n == 1) return(x) paste0(x, "_", seq_along(x)) })
方案2:dplyr实现(代码更简洁易读)
library(dplyr) Data_I_Have <- data.frame( "Person" = c("John", "John", "John", "Peter", "Peter", "Peter", "Tim", "Kevin", "Adam", "Adam", "Xavier"), "Number_of_Kids" = c("4", "1", "1", "5", "2", "3", "7", "0", "3", "3", "5") ) Data_I_Want <- Data_I_Have %>% group_by(Person) %>% mutate(Person = if_else(n() > 1, paste0(Person, "_", row_number()), Person)) %>% ungroup()
运行以上任意一种方案后,得到的结果即为你需要的目标数据。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

