Ich muss einige Operationen in einem Datenrahmen durchführen und da es ein bisschen speziell ist, habe ich keine Ahnung, wie ich sie ausführen soll. Hier einige Daten:Auswählen aufeinanderfolgender Zeilen in einem Datenrahmen ... r
x<-seq(1:250)
pos<-seq(1000,1249,1)
pval<-c(rep(0.25,40),rep(0.0001,10),rep(0.14,100),rep(0.0005,20),rep(0.58,10),rep(0.00001,20),rep(0.85,50))
len<-rep(0.1,250)
nsnp<-rep(33.7,250)
data<-data.frame(cbind(x,pos,pval,len,nsnp))
Nun, so mein Problem ist, dass ich einen Datenrahmen von diesem zu schaffen, aber ich brauche die aufeinander folgenden Zeilen kombinieren nach Daten $ pval. Das heißt, nach Daten sortieren $ x Ich muss alle aufeinanderfolgenden Elemente, die eine Daten $ pval < = als 0,05 haben. Und durch:
- Mittlere Daten $ pos zwischen dem ersten und letzten Mal in Folge Elemente mit Daten $ pval < = 0,05
- Summe all aufeinander folgende Daten $ len mit Daten $ pval < = 0,05
- Sum alle aufeinanderfolgenden Daten $ nsnp mit Daten $ pval < = als 0,05
Da in unserem Datenrahmen (Daten) gibt es drei Regionen mit aufeinanderfolgenden Daten $ x Zahlen, sieht die endgültige Datenbank sollte wie folgt aus:
pos len nsnp
[1,] 1044.5 1 337
[2,] 1159.5 2 674
[3,] 1189.5 2 674
Diese Zahlen kann wie folgt erreicht werden:
data2<-subset(data,data$pval<=0.05)
mean(data2$pos[data2$pos>=1040 & data2$pos<=1049])
sum(data2$len[data2$pos>=1040 & data2$pos<=1049])
sum(data2$nsnp[data2$pos>=1040 & data2$pos<=1049])
mean(data2$pos[data2$pos>=1150 & data2$pos<=1169])
sum(data2$len[data2$pos>=1150 & data2$pos<=1169])
sum(data2$nsnp[data2$pos>=1150 & data2$pos<=1169])
mean(data2$pos[data2$pos>=1180 & data2$pos<=1199])
sum(data2$len[data2$pos>=1180 & data2$pos<=1199])
sum(data2$nsnp[data2$pos>=1180 & data2$pos<=1199])
Ich hoffe nun, mein Problem verstanden wird. Mein Problem ist, dass ich nicht finden konnte, wie man die aufeinanderfolgenden Reihen entsprechend Daten $ x auswählt. Diese aufeinanderfolgenden Zeilen in meinem Beispiel sind: Pos. 1040-1049, Pos. 1150-1169 und Pos. 1180-1199.
Hallo Cebs. Was hast du versucht? – Vincent
Für den ersten Teil ich Teilmenge nach Daten $ pval. Ich weiß jedoch nicht, wie ich anfangen soll, die Operationen der aufeinanderfolgenden Zeilen zu erhalten. Danke – Cebs
Wieder verstehe ich nicht, warum meine Frage ist downvote ... Ist eine perfekte legit Frage, mit einem Beispiel und ich glaube gut erklärt, bitte jemand erklären mir, warum ... – Cebs