Puncte:1

Extragerea datelor specifice din diferite tabele și îmbinarea acestora

drapel in

Aș dori să extrag anumite rânduri din anumite coloane din tabele diferite, pe baza antetului coloanei. Cu toate acestea, cunoștințele mele par să fie prea limitate pentru a le rezolva singur (atât în ​​linia de comandă, cât și în python).

Am un director cu un număr tot mai mare de fișiere .tsv (tabelele OTU). Toate aceste fișiere au același aspect:

  • Rândul 1 conține anteturi.
  • Rândurile 2 - x conțin date. Numărul de coloane poate diferi între fișiere.
  • Coloana 1 conține întotdeauna ID-urile OTU.
  • Ultima coloană conține întotdeauna Taxonomia.

fișierele formatate text pot fi găsite în partea de jos

De exemplu, fișierul 1 arată astfel:

OTU_id 20210801_eșantionA 20210801_probaB 20210801_probaC Taxonomie
otuA 5 1 0 Hans este cool
otuB 2 0 0 Patricia are ochi albaștri
otuF 0 6 2 Rutger este de fapt Bart
otuZ 1 3 0 Felix era pierdut

Fișierul 2 arată astfel:

OTU_id 20211111_probaT 20211111_eșantionG 20211111_probaA Taxonomie
otuA 0 3 3 Hans este cool
otuB 2 1 0 Patricia are ochi albaștri
otuP 1 6 0 Thomas este grozav
otuT 2 22 56 Anna și Elsa
otuZ 1 8 4 Felix era pierdut

Desigur, numărul de mostre și otu-uri sunt diferite pe fișier. După cum puteți vedea, de asemenea, anteturile mostrelor sunt întotdeauna precedate de o dată. Într-un anumit fișier, aceasta este întotdeauna aceeași dată.

Ceea ce vreau să obțin acum este următorul lucru:

Dacă am un anumit nume de eșantion, de exemplu sampleA, vreau să extrag rezultatele pentru acest eșantion din toate tabelele (fișiere .tsv) din director. Desigur, sampleA ar trebui extras doar din fișierele în care este prezent.

În primul tabel va găsi eșantionul A în coloana a doua și ar trebui să preia rezultatele pentru care valoarea din rândurile de mai jos este mai mare decât 0. În al doilea tabel, va găsi eșantionul A în coloana a 4-a.

Masa finală ar trebui să arate astfel:

OTU_id 20210801_eșantionA 20211111_probaA Taxonomie
otuA 5 3 Hans este cool
otuB 2 0 Patricia are ochi albaștri
otuZ 1 4 Felix era pierdut
otuT 0 56 Anna și Elsa

SampleA are date pentru otuA,B,Z în primul fișier. Aceste rezultate sunt preluate (deci OTU_id, valorile pentru antetul 20210801_sampleA și Taxonomie).

După cum veți vedea, otuF nu a fost extras din primul tabel, deoarece sampleA avea o valoare 0 acolo. otuF, de asemenea, nu este prezent în tabelul 2, deci deci absența totală în fișierul de ieșire.

otuA și otuZ au avut și valori > 0 în tabelul 2, așa că aceste valori au fost preluate.

otuB a avut o valoare de 0 pentru eșantionul A din tabelul 2. În mod normal, nu l-ar extrage, dar din moment ce fusese extras din tabelul 1, se adaugă un 0 în acea poziție.

otuT este prezent doar în tabelul 2 și, prin urmare, a fost extras acolo (OTU_id, valoare pentru 20211111_sampleA și Taxonomie). Deoarece nu a fost găsit în tabelul 1, se adaugă un 0 în acea poziție.

În fișierul cu rezultate, prima coloană ar trebui astfel să fie și OTU_id. coloanele de la 2 la x ar trebui să conțină datele pentru sampleA, extrase din fișierele din director. Ultima coloană ar trebui să conțină Taxonomia.

Sper că reușiți să înțelegeți totul. Mă deranjează de ceva timp și nu am abilitățile să-mi dau seama. Vă rog să-mi spuneți dacă ceva nu este clar!

Vă mulțumesc mult pentru ajutor și îmi pare rău că vă deranjez cu asta!

Noroc Guillaume

Tabelul formatat text 1.tsv:

OTU_id 20210801_sampleA 20210801_sampleB 20210801_sampleC Taxonomie
otuA 5 1 0 Hans e cool
otuB 2 0 0 Patricia are ochii albaștri
otuF 0 6 2 Rutger este de fapt Bart
otuZ 1 3 0 Felix a fost pierdut

tabel formatat text2.tsv

OTU_id 20211111_sampleT 20211111_sampleG 20211111_sampleA Taxonomie
otuA 0 3 3 Hans e cool
otuB 2 1 0 Patricia are ochii albaştri
otuP 1 6 0 Thomas este grozav
otuT 2 22 56 Anna şi Elsa
otuZ 1 8 4 Felix a fost pierdut

ieșire în format text.tsv

OTU_id 20210801_sampleA 20211111_sampleA Taxonomie
otuA 5 3 Hans e cool
otuB 2 0 Patricia are ochii albaștri
otuZ 1 4 Felix a fost pierdut
otuT 0 56 Anna si Elsa
muru avatar
drapel us
Vă rugăm să postați exemplu de intrare și de ieșire așteptată ca text formatat în cod, vă rugăm: https://askubuntu.com/editing-help#code Asta face mai ușor de testat
drapel in
Bună muru, le-am adăugat acum la sfârșitul postării. Sper că așa ai vrut să spui? Vă rog să-mi spuneți dacă am greșit.
muru avatar
drapel us
Multumesc, e mult mai bine!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.