행 이름이 같은 값 병합

행 이름이 같은 값 병합

다음과 같은 테이블이 있습니다.

   Genes     Category
1. Gene1     dark_11
2. Gene1     dark_9
3. Gene2     dark_7
4. Gene1     dark_5

Category동일한 행 이름을 가진 열에서 쉼표로 구분된 값을 병합하여 Genes다음과 같은 출력을 얻고 싶습니다 .

   Genes      Category
1. Gene1      dark_11, dark_9, dark_5
2. Gene2      dark_7

어떤 도움이라도 대단히 감사하겠습니다.

답변1

awk 배열을 사용하여 충족하려는 조건별로 색인을 생성한 다음 각 관련 범주를 배열의 각 값에 추가할 수 있습니다. 예를 들면 다음과 같습니다.

awk 'NR==1 {print $0}; NR>1 {if(cat[$2])cat[$2]=cat[$2]", "$3; else cat[$2]=$3;}; END{j=1; for (i in cat) print j++".", i, cat[i]}' test.txt

test.txt입력 파일 입니다 .

배열 cat에는 두 개의 값이 포함되며, cat[GeneX]여기에는 각 유전자가 연결된 범주가 포함된 문자열이 포함됩니다. 배열의 올바른 값에 카테고리를 추가하기 전에 배열이 비어 있는지 확인해야 하며, 카테고리 사이에 쉼표를 추가하면 됩니다.

관련 정보