我需要从数据框中按行替换重复元素到NA。我将采用基础,tidyverse
或data.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
)
答案 0 :(得分:2)
这是一个base R
选项,我们循环使用replace
duplicated
NA
个c
元素,并连接非{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