如何清除数据框的一列中的重复单元格而不删除该行?

时间:2017-06-30 18:13:03

标签: r dataframe replace duplicates

对于我正在使用的内容,我很难找到一个解决方案,我可以删除重复值而不删除重复行甚至替换整行。我想要做的是采用如下数据框:

   A  B  C  D  E
[1]1  2  5  6  7
[2]1  3  6  5  7 
[3]1  4  7  4  7
[4]2  1  3  3  6
[5]2  2  4  5  6
[6]3  1  2  2  5
[7]3  2  1  3  5

并重做它,以便删除E列中的重复项并将其替换为空白值,如下所示:

       A  B  C  D  E
    [1]1  2  5  6  7
    [2]1  3  6  5   
    [3]1  4  7  4  
    [4]2  1  3  3  6
    [5]2  2  4  5  
    [6]3  1  2  2  5
    [7]3  2  1  3  

通过这种方式,我可以保持数据帧的其余部分完好无损。这个目的很大程度上是为了我最终打印时的格式化(如果有人想知道为什么有人会想要这样做)。

不可否认,我是初学者。这是我以前用于运行Excel VBA的任务,但是这个过程在计算机上非常繁琐,因为我在一个非常大的数据集上运行它并且它会使所有内容减慢太多。非常感谢任何帮助。

编辑:已经提出了类似的问题 - 但这些问题仅适用于由一列组成的数据框(即,他们不必保留替换中的其余部分)这些问题的解决方案将识别E列中具有重复值的行,然后用空白替换所有列中的值。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用重复:

df$E[duplicated(df$E)] <- ""

> df
  A B C D E
1 1 2 5 6 7
2 1 3 6 5  
3 1 4 7 4  
4 2 1 3 3 6
5 2 2 4 5  
6 3 1 2 2 5
7 3 2 1 3 

数据

df <- read.table(text="   A  B  C  D  E
1  2  5  6  7
1  3  6  5  7 
1  4  7  4  7
2  1  3  3  6
2  2  4  5  6
3  1  2  2  5
3  2  1  3  5",header=TRUE,stringsAsFactors=FALSE)