重命名R中数据框中的列下的重复字符串(或值)

时间:2015-07-07 14:14:23

标签: r

我的问题是问题here的变体。我在Column2中有一个重复(重复)值的数据框,如下所示:

df <- read.table(text='Column1   Column2  
 1         A 
 2         B 
 3         C 
 4         B 
 5         B 
 6         A
 7         C
 8         D ', header=TRUE)

重复值不遵循任何顺序。我想重命名重复的列值,以区分它们。任何变化都可以。但所有那些独特的值(如上面的'D')应该保持不变。例如,转换后的列值可以是:

   Column1   Column2
     1         A1 
     2         B2 
     3         C1 
     4         B3 
     5         B4 
     6         A2
     7         C2
     8         D 

或者也可以如下:

 Column1   Column2
     1         Ax 
     2         Bx 
     3         Cx 
     4         By 
     5         Bz 
     6         Ay
     7         Cy
     8         D

其中x,y和z是任何数字或文字(甚至A.x或A_x都可以)。

我尝试了以下解决方案但是它确实重命名了重复值,对于唯一列值,它会留下数字。

n<-transform(df, Column.new = ifelse(duplicated(Column2) | duplicated(Column2, fromLast=TRUE),paste(Column2,seq_along(Column2), sep="") , Column2))

结果是:

    Column1   Column2  Column.new
1       1       A          A1
2       2       B          B2
3       3       C          C3
4       4       B          B4
5       5       B          B5
6       6       A          A6
7       7       C          C7
8       8       D          4

值'D'(最后一行)应该保持不变,而不是被'Column.new'中的'4'替换。

我将很感激解决方案。

1 个答案:

答案 0 :(得分:2)

使用function cleanScroller() { $('li.ui-datascroller-item').remove(); }

dplyr