2016-11-29 70 views
1

因为我不知道如何用正确的方式在文本中描述我的问题我给你举一个例子。我已经以下数据帧:在数据框中添加一个字符串的次数

my.data = data.frame("names" = c("Michael","Thomas","Daniel","Peter","Michael","Thomas","Ruben","Thomas")) 

其给出:

names 
1 Michael 
2 Thomas 
3 Daniel 
4 Peter 
5 Michael 
6 Thomas 
7 Ruben 
8 Thomas 

和我的期望的输出是:

 names 
1 Michael 
2 Thomas 
3 Daniel 
4  Peter 
5 Michael.2 
6 Thomas.2 
7  Ruben 
8 Thomas.3 

是否有人有一个建议如何实现它在自动更大的数据框的方式?

在此先感谢。

回答

1

我们有一些选择

my.data$names <- with(my.data, sub("\\.1$", "", paste(names, ave(seq_along(names), 
     names, FUN=seq_along), sep="."))) 
my.data$names 
#[1] "Michael" "Thomas" "Daniel" "Peter"  "Michael.2" "Thomas.2" "Ruben"  "Thomas.3" 

还是make.unique

make.unique(as.character(my.data$names)) 
#[1] "Michael" "Thomas" "Daniel" "Peter"  "Michael.1" "Thomas.1" "Ruben"  "Thomas.2" 
+0

哇,第二个解决方案是很容易的。不知道这个功能存在。 – burton030

+0

@ burton030是的,它比较容易,但后缀将从.1开始,而不是在您预期的 – akrun

+1

中为.2。对我而言,这也是足够的。谢谢。 – burton030

相关问题