병합한 featureCounts의 RNAseq 데이터세트가 있습니다. 3개의 조건과 3개의 반복이 있습니다. 5개 이상의 열에서 유전자 발현 값이 3 미만인 행을 삭제하고 싶습니다.
다음은 내 데이터 세트의 예입니다.
Gene_id. M1 M2 M3 W1 W2 W3 S1 S2 S3
ENSMUSG00000102693 18 4 5 8 0 2 1 0 0
ENSMUSG00000064842 1 0 0 0 0 0 1 1 2
ENSMUSG00000051951 25 23 32 54 78 77 48 56 33
ENSMUSG00000102851 0 0 0 0 0 0 0 0 0
ENSMUSG00000103377 0 10 0 2 5 0 6 7 8
다른 분석 도구에서 추가 DE 분석을 위해 이 데이터 세트를 가져오고 싶습니다.
답변1
내가 귀하의 질문을 이해하는 한, 귀하는
awk '{
count=0
for (i=2; i<=NF; i++) if ($i < 3) count++
if (count < 5) print
}'
각 행에 대해 카운터를 0으로 설정합니다. 그런 다음 첫 번째(유전자 ID)를 제외한 각 필드(열)를 살펴보고 3보다 작은 경우 개수를 셉니다. 그런 다음 개수가 5보다 작으면 해당 줄을 인쇄합니다. 5개 이상의 열에 3보다 작은 값이 있으면 해당 행을 건너뜁니다(즉, 삭제).
한 줄로 접어야 하는 경우 ;
명령문 뒤에 세미콜론( )을 추가해야 합니다(위 버전에서 개행 문자가 있었던 위치입니다).
awk '{ count=0; for (i=2; i<=NF; i++) if ($i < 3) count++; if (count < 5) print; }'