【问题标题】:replace the duplicate data in a row with NA except the first [duplicate]用 NA 替换行中的重复数据,除了第一个 [重复]
【发布时间】:2019-06-08 22:21:04
【问题描述】:

我有一个大数据框,我试图在一行中找到重复的元素,然后用空字符串替换所有重复的值,除非它们第一次出现在一行中:

 df = matrix( c(2, 4, 2, 1, 5, 1, 3, 3, 4),nrow=3,ncol=3,byrow = TRUE) 

#  V1  V2  V3 
#1  2   4   2  
#2  1   5   1 
#3  3   3   4 

我已经尝试过了,但是它用 NA 替换了所有这些,

df[which(t(apply(df,1,function(x) 
     duplicated(x) | duplicated(x, fromLast = T))), arr.ind = T)] <- ""

结果是这样的:

    V1  V2  V3 
 1  NA   4   NA  
 2  NA   5   NA 
 3  NA   NA  4

但我希望结果是:

   V1  V2  V3 
1  2   4   NA  
2  1   5   NA 
3  3   NA  4

【问题讨论】:

    标签: r


    【解决方案1】:

    使用applyMARGIN = 1(逐行)我们可以将replace duplicated 值连续传递给NA

    t(apply(df, 1, function(x) replace(x, duplicated(x), NA)))
    
    #     [,1] [,2] [,3]
    #[1,]    2    4   NA
    #[2,]    1    5   NA
    #[3,]    3   NA    4
    

    【讨论】:

    • Ronak Shah,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2019-02-05
    • 2013-09-04
    • 2016-08-29
    • 2019-09-26
    相关资源
    最近更新 更多