R - 查找行中的所有重复项并替换

R - find all duplicates in row and replace

我有一个大数据框,我正在尝试在一行中查找重复元素,然后用空字符串替换所有重复值:

  X1 X2 X3 X4 X5
x  1  2  3  3  4
y  1  1  2  3  4

应该变成

  X1 X2 X3 X4 X5
x  1  2        4
y        2  3  4

我可以在单个向量上执行此操作:

x <- c(1,2,3,3,4)
x[x %in% x[duplicated(x) == TRUE]] = ""
x

[1] "1" "2" ""  ""  "4"

但我无法让它适用于数据框中的所有行。 我尝试了以下但无法正常工作:

apply(df,2,function(x) x[x %in% x[duplicated(x) == TRUE]] = "")

有什么想法吗?

你可以试试这个:

as.data.frame(t(apply(df, 1, function(x) {x[x==x[duplicated(x)]] <- ''; x})))

获得

   X1 X2 X3 X4 X5
x  1  2        4
y        2  3  4

如果要保留每一列的整数类型,试试这个:

as.data.frame(t(apply(df, 1, function(x) {x[x==x[duplicated(x)]] <- NA; x})))

得到

  X1 X2 X3 X4 X5
x  1  2 NA NA  4
y NA NA  2  3  4

像这样,

找出数据框中重复的索引并将其替换为空白 space。

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

df
#   X1 X2 X3 X4 X5
#x  1  2        4
#y        2  3  4