Dataframe-Verarbeitung

Ich habe einen Datenrahmen, den ich von @ gelesen haMatch <- read.table("Match.txt", sep="", fill =T, stringsAsFactors = FALSE, quote = "", header = F) und sieht so aus:

> ab
           V1       V2  V3                       V4 V5    V6 V7    V8 V9               V10
1  Inspecting sequence  ID chr1:173244300-173244500       NA       NA                     
2   V$ATF3_Q6        |  19                      (-)  | 0.877  | 0.622  |    aagtccCATCAggg
3   V$ATF3_Q6        |  34                      (-)  | 0.788  | 0.655  |    agggaaCGACAcag
4   V$ATF3_Q6        | 102                      (+)  | 0.738  | 0.685  |    cccTGAGCttagga
5  V$CEBPB_01        |  24                      (+)  | 0.950  | 0.882  |    ccatcagGGAAGgg
72   V$YY1_01        | 117                      (+)  | 0.996  | 0.984  | acttCCCATcttttaag
73 Inspecting sequence  ID chr1:173244350-173244550       NA       NA                     
74  V$ATF3_Q6        |  52                      (+)  | 0.738  | 0.685  |    cccTGAGCttagga
75  V$ATF3_Q6        | 160                      (+)  | 0.862  | 0.687  |    gtcTGACCtggaga
76 V$CEBPB_01        |  57                      (+)  | 0.966  | 0.958  |    agcttagGAAACtt

s enthält Millionen solcher Wiederholungen, wobei die erste Zeile lauteInspecting sequence ID chr1:173244300-173244500 und dann einen Wert, wie oben zu sehen ist. Ich möchte es unter Berücksichtigung der folgenden Punkte verarbeiten:

Extrahieren Sie die erste Zeile und brechen Sie sie auf: und- so bekomme ich drei Spalten wie:chr1 173244300 173244500 Die 4. Spalte sollte das 1. Element von V1 $ Row2 enthalten, aufgeteilt auf$ und_ und nimm einfach den 2. Index, der @ sein wiATF3, so habe ich 30 bestimmte Fälle (nennen wir sie Namen), einige werden beobachtet, andere nicht in jedem Fall (1 Fall ist von Zeile 1 bis Zeile 72, zweiter Anfang von Zeile 73).Wenn dieser Name in einem Fall erscheint, dann ist der WertB wird dieser Spalte zugewiesen, wenn nicht der WertU wird @ zugewies

So basierend auf meiner Eingabe möchte ich die folgende Ausgabe erhalten:

chr     start       stop        ATF3  CEBPB  YY1    ..(All which appear e.g from row 1 to 72, ignoring duplicates)
chr1    173244300   173244500   B     B      B  
chr1    173244350   173244550   B     B      U

Ich möchte eine feste Anzahl von Spalten in der Kopfzeile (ich weiß, dass es sich um 32 solche Namen handelt). Wenn sie also in einem Fall erscheinen,B wird vergeben, sonstU wird zugewiesen.

Wenn mir jemand dabei helfen kann, ist das eine große Hilfe.

Hier ist der Wert dieses Beispieldatenrahmens:

> ab <- dput(Match[c(1:5,72:76), ])
structure(list(V1 = c("Inspecting", "V$ATF3_Q6", "V$ATF3_Q6", 
"V$ATF3_Q6", "V$CEBPB_01", "V$YY1_01", "Inspecting", "V$ATF3_Q6", 
"V$ATF3_Q6", "V$CEBPB_01"), V2 = c("sequence", "|", "|", "|", 
"|", "|", "sequence", "|", "|", "|"), V3 = c("ID", "19", "34", 
"102", "24", "117", "ID", "52", "160", "57"), V4 = c("chr1:173244300-173244500", 
"(-)", "(-)", "(+)", "(+)", "(+)", "chr1:173244350-173244550", 
"(+)", "(+)", "(+)"), V5 = c("", "|", "|", "|", "|", "|", "", 
"|", "|", "|"), V6 = c(NA, 0.877, 0.788, 0.738, 0.95, 0.996, 
NA, 0.738, 0.862, 0.966), V7 = c("", "|", "|", "|", "|", "|", 
"", "|", "|", "|"), V8 = c(NA, 0.622, 0.655, 0.685, 0.882, 0.984, 
NA, 0.685, 0.687, 0.958), V9 = c("", "|", "|", "|", "|", "|", 
"", "|", "|", "|"), V10 = c("", "aagtccCATCAggg", "agggaaCGACAcag", 
"cccTGAGCttagga", "ccatcagGGAAGgg", "acttCCCATcttttaag", "", 
"cccTGAGCttagga", "gtcTGACCtggaga", "agcttagGAAACtt")), .Names = c("V1", 
"V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10"), row.names = c(1L, 
2L, 3L, 4L, 5L, 72L, 73L, 74L, 75L, 76L), class = "data.frame")

Antworten auf die Frage(6)

Ihre Antwort auf die Frage