Ich habe 2 Datenrahmen:für Bereiche in Datenrahmen der Suche Werte
> access
V1 V2 V3
1 chr10 136122 136533
2 chr10 179432 179769
3 chr10 182988 183371
4 chr10 224234 224489
5 chr10 237693 237958
und
> peaks
V1 V2 V3
1 chr10 126122 126533
2 chr10 179450 179730
3 chr10 182788 183350
4 chr10 224244 224500
5 chr10 237695 237950
Die coloumn V2 und V3 sind Start und Ende der Regionen (Bereich) in beiden Datenrahmen . Ich möchte diese Zeilen in peaks
Datenrahmen, für die access$V1 == peaks$V1
UND die in den Bereich (oder Regionen) von access
Datenrahmen fallen. Zum Beispiel wird das neue Datenrahmen wie: peaks
Datenrahmen des
1. Reihe Region nicht in
access
Datenrahmen existiert, so wird es Kategorie U zugeordnet werden.2. Reihe von
peaks
fällt in dem gegebenen Bereich inaccess
Datenrahmen (2. Reihe) und die Kategorie B zugewiesen.3. Reihe von
peaks
nicht vollständig in dieser Region fallen, aber es überlappt irgendwie mit Region in 3. Reihe vonaccess
, dafür werde ich Kategorie A zuweisen.4. Reihe von
peaks
auch nicht vollständig überlappen, um es 11 Zahl nach dem Ende der Region endet in Zeile 4 des Zugangs, wird dies auch A in Kategorie sein.5. Reihe fällt in der Region wird daher in Kategorie B.
Erwartete Ausgabe:
> newdf
V1 V2 V3 V4
1 chr10 126122 126533 U
2 chr10 179450 179730 B
3 chr10 182788 183350 A
4 chr10 224244 224500 A
5 chr10 237695 237950 B
Hier sind die dput von Eingangsdatenrahmen:
> dput(peaks)
structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "chr10", class = "factor"),
V2 = c(126122L, 179450L, 182788L, 224244L, 237695L), V3 = c(126533L,
179730L, 183350L, 224500L, 237950L)), .Names = c("V1", "V2",
"V3"), class = "data.frame", row.names = c(NA, -5L))
> dput(access)
structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 1L), .Label = "chr10", class = "factor"),
V2 = c(136122L, 179432L, 182988L, 224234L, 237693L), V3 = c(136533L,
179769L, 183371L, 224489L, 237958L)), .Names = c("V1", "V2",
"V3"), class = "data.frame", row.names = c(NA, -5L))
Edit:
Mein neuer Zugang df sieht wie folgt aus und jetzt möchte ich auch app Ende der letzten Spalte in meinem letzten Ausgabe df:
> access
V1 V2 V3 V4
1 chr10 136122 136533 found
2 chr10 179432 179769 notFound
3 chr10 182988 183371 found
4 chr10 224234 224489 found
5 chr10 237693 237958 notFound
So, jetzt gibt eine zusätzliche Bedingung ist, das ist, wenn Zeile in Zugang in Spitzen fällt Bereich dann auch den Wert in V4 in einer neuen Spalte in final df anhängen, wenn Eine Region wird nicht gefunden. Standardmäßig wird notFound
angezeigt. Daher wird die endgültige Ausgabe sein:
> newdf
V1 V2 V3 V4 V5
1 chr10 126122 126533 U notFound
2 chr10 179450 179730 B notFound
3 chr10 182788 183350 A found
4 chr10 224244 224500 A found
5 chr10 237695 237950 B notFound
Hier in row1$V5
der Wert NOTFOUND ist da dieser Bereich nicht gefunden wurde und in den übrigen Fällen haben wir die Werte in V5 von modifizierten Zugriff df.
Mögliche Duplikate von [Roll join mit Start/Ende-Fenster] (http://StackOverflow.com/Questions/24480031/Roll-join-With-start-end-window) – zx8754
@ zx8754 Der Unterschied ist in dieser Frage es ist nur eine Zahl, die geprüft wird, ob sie im Bereich existiert oder nicht, ** hier suche ich nach einem Bereich (keine Nummer) mit einem anderen Bereich **. – Newbie
@ zx8754 'newdf <- Teilmenge (merge (Zugriff, Peaks), Start <= V2 & V3 <= Ende)' das gibt mir nur diejenigen, die in diesen Bereich fällt, ich bin nicht in der Lage, herauszufinden, wie Sie ihnen zuweisen Kategorien, die ich definiert habe, und auch, wie man diejenigen hält, die nicht vollständig in diese Bereiche fallen. Kannst du mir dabei helfen..? – Newbie