У меня есть dataframe, как показано ниже (это приведенный пример, у меня есть еще много строк и столбцов):
CH1 CH2 CH3
1 3434 282 7622
2 4442 6968 8430
3 4128 6947 478
4 6718 6716 3017
5 3735 9171 1128
6 65 4876 4875
7 9305 6944 3309
8 4283 6060 650
9 5588 2285 203
10 205 2345 9225
11 8634 4840 780
12 6383 0 1257
13 4533 7692 3760
14 9363 9846 4697
15 3892 79 4372
16 6130 5312 9651
17 7880 7386 6239
18 8515 8021 2295
19 1356 74 8467
20 9024 8626 4136
Мне нужно создать дополнительные столбцы, разделив значения. Например, значение 1356 должно быть разделено на 6, 56 и 356. Я делаю это при расщеплении цикла for по строкам. Я делаю это, чтобы сохранить ведущие нули.
# CREATE ADDITIONAL COLUMNS
for(col in 1:3) {
# Create a temporal variable
temp <- as.character(data[,col] )
# Save the new column
for(mod in c(-1, -2, -3)) {
# Create the column
temp <- cbind(temp, str_sub(as.character(data[,col]), mod))
}
# Merge to the row
data <- cbind(data, temp)
}
Моя проблема в том, что не все ячейки имеют 4 цифры: у некоторых может быть 1, 2 или 3 цифры. Поэтому при разрыве я получаю повторяющиеся значения. Например, для 79 я получаю: 79 (оригинал), 9, 79, 79, 79.
Проблема: мне нужно удалить повторяющиеся значения. Конечно, я мог бы делать unique, но это дает мне строки нечетного числа столбцов. Мне нужно заполнить те недостающие (то есть удаленные повторяющиеся значения) с помощью NA. Я могу сравнить это по строке.
Я проверил здесь ответ CJ Yetman, но они заменяют только последовательные числа. Мне нужно только сохранить уникальные значения.
Проблема: Вот скрипка, в которой работает мой код: Ответ CJ Yetman здесь
Ожидаемый результат: Например, для строк 11 & amp; 12 примера (см. Ссылку для воспроизводимого примера), если это мой оригинал:
8634 4 34 634 4840 0 40 840 780 0 80 780
6383 3 83 383 0 0 0 0 1257 7 57 257
Я хотел бы получить следующее:
8634 4 34 634 4840 0 40 840 780 NA 80 NA
6383 3 83 383 0 NA NA NA 1257 7 57 257