Я хочу удалить дублированные значения в каждом столбце неравномерной таблицы данных. Например, если исходные данные (таблица реальных данных имеет много столбцов и строк):
dt <- data.table(A = c("5p", "3p", "3p", "6y", NA), B = c("1c", "4r", "1c", NA, NA), C = c("4f", "5", "5", "5", "4m"))
> dt
A B C
1: 5p 1c 4f
2: 3p 4r 5
3: 3p 1c 5
4: 6y <NA> 5
5: <NA> <NA> 4m
после удаления дублированных значений в каждом столбце, это должно выглядеть следующим образом:
A B C
5p 1c 4f
3p 4r 5
NA NA NA
6y NA NA
NA NA 4m
Я пробую решение, предложенное в другом потоке, используя data.table. Однако я получаю только первое дублированное значение в каждом столбце, замененное на «NA», но не последующие.
cols <- colnames(dt)
dt[, lapply(.SD, function(x) replace(x, anyDuplicated(x), NA)), .SDcols = cols]
> dt
A B C
1: 5p 1c 4f
2: 3p 4r 5
3: <NA> <NA> <NA>
4: 6y <NA> 5
5: <NA> <NA> 4m
Как мне изменить код, чтобы заменить все дубликаты?