У меня есть фрейм данных с разделителями табуляцией, подобный этому:
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 был изолирован, и не было места, когда алфавиты не были включены в образцы.
Надеюсь, это имеет смысл.