Суммирование данных и сортировка с вставкой 0, если целевых слов не существует - PullRequest
1 голос
/ 30 октября 2019

У меня есть фрейм данных с разделителями табуляцией, подобный этому:

Sample  1
A   2
B   1
D   2
Sample  2
C   1
D   1
E   2
Sample  3
D   1
E   3
Sample  4
A   1
E   3
Sample  5
A   2
B   3
Sample  6
C   1
D   2
Sample  7
D   1
E   3
Sample  8
A   3
D   2
Sample  9
A   1
Sample  10
A   1
C   2
E   3

, и я хотел бы транспонировать его и связать алфавиты и связанные значения. Если образец не содержит алфавитов, я хочу вставить «0».

Итак, мне нужен измененный фрейм данных

Sample  A   B   C   D   E
    1   2   1   0   2   0
    2   0   0   1   1   1
    3   0   0   0   1   3
    4   1   0   0   0   3
    5   2   3   0   0   0
    6   0   0   1   2   0
    7   0   0   0   1   3
    8   3   0   0   2   0
    9   1   0   0   0   0
    10  1   0   2   0   3

Я попытался обобщить фрейм данных, а затем транспонировать его. Когда я использовал,

awk 'NR==1{print} NR>1{a[$1]=a[$1]" "$2}END{for (i in a){print i " " a[i]}}' TEST

, выходные данные были

Sample  1
A  2 1 2 3 1 1
B  1 3
C  1 1 2
D  2 1 1 2 1 2
E  2 3 3 3 3
Sample  2 3 4 5 6 7 8 9 10

Образец 1 был изолирован, и не было места, когда алфавиты не были включены в образцы.

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...