在数据框中按行删除重复元素

时间:2017-10-30 16:04:53

标签: r

我需要从数据框中按行替换重复元素到NA。我将采用基础,tidyversedata.table解决方案。谢谢。例如:

library(tibble)
#input data.frame
tribble(
  ~x, ~y,  ~z,
  1,   2,   3,
  1,   1,   NA,
  4,   1,   4,
  2,   2,   3
)

#desired output
tribble(
  ~x, ~y,  ~z,
  1,   2,   3,
  1,   NA,   NA,
  4,   1,   NA,
  2,   3,   NA
)

1 个答案:

答案 0 :(得分:2)

这是一个base R选项,我们循环使用replace duplicated NAc元素,并连接非{NA NA具有t元素的元素,转置(df1[] <- t(apply(df1, 1, function(x) { x1 <- replace(x, duplicated(x), NA) c(x1[!is.na(x1)], x1[is.na(x1)]) })) df1 # A tibble: 4 x 3 # x y z # <dbl> <dbl> <dbl> #1 1 2 3 #2 1 NA NA #3 4 1 NA #4 2 3 NA )并将输出分配回原始数据集

display: flex