2016-11-29 67 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

相關問題