Subset Ich habe einen riesigen Datenrahmen mit passenden Fallkontrollpersonen. Der passende Fall: Kontrolle ist 1: 3. Ich versuche, die Case-IDs neu zu berechnen und dann die entsprechenden Steuerelemente zu extrahieren.Wie die gleichen Zeilen/IDs wiederholt in r
Also habe ich einen Vektor von IDs, wo die IDs wiederholt werden können. Ich möchte die Daten für Fälle und Kontrollen für jede ID des Vektors extrahieren. Der Fall und die übereinstimmenden Steuerelemente haben dieselbe case_num. Die% in% übernimmt immer die eindeutigen IDs aus den Daten. Ich habe es getan, um es zu tun. Es dauert etwa 2,5 Sekunden. Gibt es einen anderen effizienten Weg?
Ich bin ein einfaches Beispiel und meine Lösung für die Frage.
In meinem Fall, die Länge des ID-Vektors im Jahr 1921, hat die Funktion die Steuerelemente 1921 mal zu extrahieren. Wenn also die Zeit sogar um eine Sekunde verkürzt werden kann, wird es tatsächlich eine Menge sein, während ich den gesamten Prozess 1000 Mal wiederholen werde. Vielen Dank!
test_data=
data.frame(id=c(1,1,2,4,4,5,6),value=c('g','e','r','j','a','b','c'))
test_data
id value
1 1 g
2 1 e
3 2 r
4 4 j
5 4 a
6 5 b
7 6 c
id_vec= c(1,4,1,5)
library(plyr)
newdata.list=llply(id_vec, function(x) test_data[test_data$id==x,])
## or if we make our data a data.table then
library(data.table)
test_data= data.table(test_data)
newdata.list=llply(id_vec, function(x) test_data[id==x])
library(dplyr)
newdata.frame= bind_rows(newdata.list) ### making it a dataframe
newdata.frame
id value
1: 1 g
2: 1 e
3: 4 j
4: 4 a
5: 1 g
6: 1 e
7: 5 b
Pls schreiben die Daten als Text, nicht als Bild. Verwende 'dput (your_data)' und kopiere das Ergebnis. – GGamba
hat die Änderungen, auch die Codes nach dem Erhalten der Kommentare hinzugefügt. –
Wahrscheinlich am sichersten, nicht plyr + dplyr + data.table zu mischen; Besser, nur um zu wählen 1. Plyr wurde im Wesentlichen durch dplyr ersetzt, also wahrscheinlich nicht dieser. – Frank