首页 > 解决方案 > 如何在数据框中为类似字符串创建唯一名称?

问题描述

这是我当前的数据集。

persons<- c("James", "Michael", "Michael", "Robert", "Richard", "Harry", "Harry", "Ben", "Michael", "Harry")

因为这里的名字很常见。我想让每个名字都独一无二。为此,我使用了这组代码:

unique<- function(vec)
{
  sub('[.]',':',make.names(persons,unique = TRUE))
}
Strings<- unique(vec)

我得到了我想要的输出。但我想通过使用 strsplit() 和 paste() 函数获得相同的结果。另外我想使用粘贴功能的折叠参数。

My desired output:
James
Michael
Michael:1
Robert
Richard
Harry
Harry:1
Ben
Michael:2
Harry:2

标签: rstringfunctiondataframe

解决方案


这将完成任务:

sapply( strsplit( make.names(persons, unique = TRUE), split="[.]") , paste, collapse=":")


[1] "James"     "Michael"   "Michael:1" "Robert"    "Richard"   "Harry"    
 [7] "Harry:1"   "Ben"       "Michael:2" "Harry:2"  

“技巧”是 a) 认识到使用split="."insidestrsplit会失败,因为句点是正则表达式通配符,b) 学习使用collapse参数 forpaste来连接列表项中的项目。


推荐阅读