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