Home Forum Comunicazioni Estrarre p-value da ogni riga di una tabella

Questo argomento contiene 2 risposte, ha 2 partecipanti, ed è stato aggiornato da  fisher90 2 mesi fa.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #5943

    fisher90
    Partecipante

    Buongiorno a tutti, questo è il mio primo post sul forum e spero di non commettere errori grossolani nella pubblicazione.
    Vi presento il mio problema:

    devo svolgere una meta-analisi su una tabella di dati composta da 35175 righe e 15 colonne. All’interno delle prime due colonne sono presenti dei valori identificati con l’etichetta “source” per la prima colonna e “target” per la seconda colonna. Questi due valori sono in realtà delle posizioni, e nel mio caso particolare, rappresentano una coppia di nodi legati tra loro all’interno di un grafo.
    Nelle 13 colonne successive sono presenti dei p-value che identificano la significatività del legame tra i due nodi per ogni layer. Di seguito vi mostro le prime 5 righe del dataset:

      source target      layer1       layer2       layer3      layer4 layer5
    1   9439   9440 0.002227446           NA           NA 0.009745482     NA
    2   2669  12734          NA 5.524397e-13 8.082733e-12          NA     NA
    3   1504   1505          NA           NA           NA          NA     NA
    4   2755   8613          NA           NA 9.175214e-05          NA     NA
    5   8661   8662          NA 2.655218e-07           NA          NA     NA
            layer6 layer7       layer8 layer9 layer10 layer11      layer12 layer13
    1           NA     NA           NA     NA      NA      NA           NA      NA
    2           NA     NA           NA     NA      NA      NA           NA      NA
    3           NA     NA 6.135272e-05     NA      NA      NA           NA      NA
    4 1.041125e-05     NA           NA     NA      NA      NA           NA      NA
    5           NA     NA           NA     NA      NA      NA 5.166822e-07      NA
    

    A questo punto per poter svolgere una meta-analisi dei p-value devo considerare i valori numerici delle 13 colonne che vanno da layer1 a layer13, e omettere quelli mancanti. Per ogni coppia di nodi il numero di p-value disponibili non è costante, quindi possono essere presenti 2/3/4/ p-value per ogni riga, ad es. nella prima riga, la coppia 9439-9440 presenta dei valori solo in layer1 e layer4, la coppia successiva in layer2, layer3 e layer8, e così via.
    Quello che vorrei ottenere in output sono esclusivamente i p-value, tenendo in evidenza la coppia di nodi, senza che sia specificato il layer di appartenenza, in modo tale da poter applicare successivamente alcuni metodi di meta-analisi sulla significatività del legame.
    Spero di aver esposto in maniera chiara il problema.

    Grazie per le risposte e per il vostro aiuto.

    • Questo argomento è stato modificato 2 mesi, 4 settimane fa da  fisher90.
    #5950
    Francesco Cabiddu
    Francesco Cabiddu
    Amministratore del forum

    Ciao fisher90,
    potrebbe essere questa una soluzione (ammettendo che nel dataset esistano solo combinazioni uniche di coppie source-target [e.g. 9439-9440 esiste solo una volta nel dataset])?

    
    library(tidyverse)
    library(magrittr)
    
    dataset %<>%
      gather("layer", "p_value", -c(source, target)) %>%
      arrange(source, target)
    

    Poi se la colonna che tiene traccia del layer non ti interessa e vuoi anche eliminare i valori mancanti puoi aggiungere:

    
    dataset %<>%
      gather("layer", "p_value", -c(source, target)) %>%
      arrange(source, target) %>%
      select(-layer) %>%
      na.omit()
    
    #6077

    fisher90
    Partecipante

    Scusami se rispondo solo ora, prima cosa ti ringrazio della risposta, e speravo fosse quello che cercavo. In realtà non funziona. Mi spiego meglio:

    1) le coppie sono univoche (questa è la risposta alla tua domanda);

    2) devo ottenere i p-value per ogni riga, che questi siano 1,2,3 e via dicendo,
    omettendo gli “NA” ;

    3) successivamente devo applicare la meta analisi con il pacchetto <<library(metap)>>
    su ogni riga, in modo tale da ottenere un p-value finale che specifichi la
    significatività della coppia di nodi;

    4) la struttura dovrebbe infine essere nel seguente modo (il pvalue è inventato):
    ` source target pvalue
    9439 9440 0.002546
    . . .`

    5) per ogni riga (coppia di nodi) dovrò avere un pvalue che rappresenta il legame tra
    i nodi.

    source	 target	pvalue1	    pvalue2	pvalue3
    55	56	0.005333359		
    189	351	0.005333359		
    63	65	0.023811801		
    37	361	0.032093957		
    101	102	0.015915119		
    287	341	0.005333359		
    75	327	0.042566317		

    6) questo è l’estratto di un dataset con 3 layer che ho ricavato da excel. In pvalue2
    e pvalue3 erano presenti gli NA che ho eliminato applicando una formula.

    7) nel pacchetto “metap” sono presenti 4 metodi che io devo utilizzare per la meta-
    analisi, e necessitano di vettori di p-value. Per me una coppia di nodi rappresenta
    un vettore, ma, in tutta sincerità non ho idea di come possa fare in modo che R si
    comporti come excel, ovvero che applichi i metodi di meta-analisi ad ogni coppia e
    riporti il p-value aggregato di fianco alla coppia in questo modo:

    source	 target	pvalue_finale
    55	56	0.005333359
    189	351	0.005333359
    63	65	0.023811801
    37	361	0.032093957
    101	102	0.015915119
    287	341	0.005333359
    75	327	0.042566317
    74	362	0.005333359

    Spero di essermi spiegato bene. Grazie a chiunque abbia la pazienza di aiutarmi.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)

Devi essere loggato per rispondere a questa discussione.