在第一次出现后,在每行中将NAs分配给重复项

时间:2017-02-09 16:44:23

标签: r duplicates

我有一个如下所示的数据框:

    crop1   crop4       crop5       crop6   crop7   crop8         crop9  crop10      crop11
1   Onion    Rice  Soya Beans  Sugar Cane   Onion     Tea  Corn (Maize)    Rice  Soya Beans
2    None    None        None        None    None    None          None    None        None
3    None    None        None        None    None    None          None    None        None
4 Accacia  Rubber     Accacia      Rubber Accacia  Rubber       Accacia  Rubber     Accacia
5 Accacia  Rubber     Accacia      Rubber Accacia  Rubber       Accacia  Rubber     Accacia
6    Rice    Rice        Rice        Rice    Rice    Rice          Rice    Rice        Rice

现在我想在首次出现后为每行中的所有重复条目分配NAs。也就是说,我的数据帧应该在每一行中只有唯一的条目,否则就是NA。例如,在第一行中我希望:

1   Onion    Rice  Soya Beans  Sugar Cane   NA    Tea  Corn (Maize)    NA  NA

正如“洋葱”,“大米”和“大豆豆”已经出现在这一排。因此,第4行应如下所示:

4 Accacia  Rubber NA NA NA NA NA NA NA

有关于此的任何想法吗?

谢谢!

数据框:http://pastebin.com/yKqhWyvW

1 个答案:

答案 0 :(得分:1)

我们可以使用duplicated通过使用NA

循环行,将每个行中的重复元素设置为apply
df1[] <- t(apply(df1, 1, FUN = function(x) replace(x, duplicated(x), NA)))