【问题标题】:How to create a unique name in a dataframe for similar strings? [closed]如何在数据框中为类似字符串创建唯一名称? [关闭]
【发布时间】:2019-08-11 16:48:52
【问题描述】:

这是我当前的数据集。

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

【问题讨论】:

  • 我不明白你的问题在这里。因此,您的代码可以正常工作,但出于某种原因您想使用不同的功能?这没有任何意义。为什么需要使用这些不同的功能?
  • @MrFlick,感谢您提供的信息。我已经为回答我问题的答案投票了。另外,我问这个问题是因为我想以不同的方式做同样的事情。因为我想了解我们如何使用不同的代码来做同样的事情。
  • 你目前拥有的功能也只是make.unique(persons, sep=":")
  • @thelatemail,我们不能使用 strsplit 和 paste 功能吗?

标签: r string function dataframe


【解决方案1】:

这将完成任务:

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) 认识到在 strsplit 中使用 split="." 会失败,因为句点是正则表达式通配符,并且 b) 学习使用 pastecollapse 参数来连接项目列表项..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多