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:
:
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 @ zugewiesSo 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")