【问题标题】:Replace duplicated elements with NA, instead of removing them用 NA 替换重复的元素,而不是删除它们
【发布时间】:2016-05-18 17:05:22
【问题描述】:

我有一个DF。它的一列看起来像

DF$A
A
    a
    a
    a
    b
    b
    b
    c
    c

我正在尝试用NA 替换此列中的所有重复字符。 天真地,我试过了

DF$A <- DFl[duplicated(DF$A),] <- NA

但它只是将整个 DF 转换为 NA 值。感谢您的任何建议。

【问题讨论】:

  • DF$A[duplicated(DF$A)] &lt;- NA
  • x &lt;- rep(letters[1:3], c(3, 3, 2)); is.na(x) &lt;- duplicated(x) 对我来说很好。
  • 提供一个可重现的例子
  • @cory,我想你可以把它变成一个答案!?
  • @RichardScriven 谢谢你,它成功了。请将其转为答案,然后我可以投票并接受

标签: r


【解决方案1】:

你已经很接近了。我不确定DFl 是什么。但这行得通...

DF <- data.frame(A=c("a", "a", "a", "b", "b", "c"))
DF$A[duplicated(DF$A)] <- NA
> DF
     A
1    a
2 <NA>
3 <NA>
4    b
5 <NA>
6    c

【讨论】:

    【解决方案2】:

    以上面的示例为例,如果您有一个包含多列的文件,并且您希望对每一列都执行相同的操作,则可以使用:

     DF <- data.frame(col1=c("a","b","a","c","b","c"),col2=c("b","c","c","c","a","a"))
    
    
    for(i in 1:ncol(DF)){
      DF[,i][duplicated(DF[,i])] <- NA 
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多