Добавление столбцов путем разделения числа и удаление дубликатов

У меня есть 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

1
задан 13 August 2018 в 16:06

0 ответов

Другие вопросы по тегам:

Похожие вопросы: