df <- data.frame(label = c("a","b","c"),
val=c("x","b","c"),
val1=c("z","b","d"))
label val val1
1 a x z
2 b b b
3 c c d
我想找出每一行中的重复值。 对于第一行,没有重复 对于第二行,“ b”重复 对于第三行,“ c”重复。 如何在R编程中找到此重复项。
我还需要用NA值替换重复的元素。 请给我建议解决方案
答案 0 :(得分:3)
将duplicated
与apply
一起使用
apply(df,1,duplicated)
[,1] [,2] [,3]
[1,] FALSE FALSE FALSE
[2,] FALSE TRUE TRUE
[3,] FALSE TRUE FALSE
并用NA
df[t(apply(df,1,duplicated))]=NA
df
label val val1
1 a x z
2 b <NA> <NA>
3 c <NA> d
答案 1 :(得分:0)
这里有几个选择
使用基数R apply
,我们将replace
的{{1}}值duplicated
每行
NA
或者使用df[] <- t(apply(df, 1, function(x) replace(x, duplicated(x), NA)))
df
# label val val1
#1 a x z
#2 b <NA> <NA>
#3 c <NA> d
和dplyr
的另一种方法是首先创建一个新列,该列代表数据帧的tidyr
,row_number()
为长格式,{{1} }每行,将gather
group_by
的值设置为replace
,然后将duplicated
返回宽格式。
NA