R中数据框中的一行中的重复值

时间:2018-10-25 18:55:03

标签: r dataframe duplicates

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值替换重复的元素。 请给我建议解决方案

2 个答案:

答案 0 :(得分:3)

duplicatedapply一起使用

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的另一种方法是首先创建一个新列,该列代表数据帧的tidyrrow_number()为长格式,{{1} }每行,将gather group_by的值设置为replace,然后将duplicated返回宽格式。

NA