2017-03-02 2 views
1

Ich arbeite mit genetischen Daten. Ich habe gerade einen Supercomputer gefunden, der bei der genetischen Analyse helfen soll, aber ich muss die Daten in genau das Format konvertieren, das der Supercomputer will: zwei Spalten, eine mit Chromosomeninformationen und eine mit p-Wert. Die p-Wert Spalte darf keine Buchstaben, sondern einige der Daten I haben in der wissenschaftlichen Schreibweise, etwa so:Wie kann ich mit plink/Unix Daten von wissenschaftlicher Notation in Dezimalzahlen umwandeln?

rs191895619 1.052e-05 
rs140779862 0.4406 
rs11127542 0.9771 
rs112183333 0.02569 
rs191067167 0.427 
rs111321342 1.042e-05 

, die mehrere E ist in der Spalte legt, die nicht Buchstaben darin haben muss.

Ich versuchte grep zu verwenden, um sie in ihre eigene Datei bewegen Sie mit grep "*e*" filename.txt > outputfilename.txt sowie grep "*e-05" filename.txt > outputfilename.txt aber es gab mir eine leere Ausgabedatei beide Male, und auch wenn alle 5000 Zeilen wissenschaftlich notierten Daten in die eigene Datei verschoben hatte, Ich weiß nicht, wie man die Daten in die Dezimalschreibweise ändert, außer indem jede Zeile einzeln bearbeitet wird, was für jede Datei mehrere Tage dauern würde.

Gibt es einen Befehl, den ich geben kann, damit die Daten, die er mir gibt, nicht in wissenschaftlicher Notation sind? Oder ein Befehl, den ich in plink oder Unix verwenden kann, um die wissenschaftliche Notation in Dezimalschreibweise umzuwandeln?

Antwort

0

können Sie awk verwenden wissenschaftliche Dezimalzahl zu konvertieren:

awk '{printf "%s %f\n", $1, $2}' file 

Ausgänge:

rs191895619 0.000011 
rs140779862 0.440600 
rs11127542 0.977100 
rs112183333 0.025690 
rs191067167 0.427000 
rs111321342 0.000010 

Sie können die Präzision einstellen, indem %f Teil in printf ändern.


Siehe auch:

Verwandte Themen