Ich habe Datensätze mit 1 bis 70 Spalten mit Daten mit 1 bis 5 Spalten mit ID-Variablen. Ich muss nach den ID-Variablen gruppieren und dann zufällig Blöcke von Zeilen innerhalb einer ID-Variablen abtasten. Der erneut abgetastete Datensatz muss dieselbe Länge wie der ursprüngliche Datensatz haben.dplyr: Zufallsauswahlverfahren für Zeilenblöcke (mehrere Gruppierungsvariablen und Datenspalten)
Unten ist und Beispiel DATA mit der gewünschten Tabelle RESULT gesetzt. Also, ich muss nach SITE
und DATE
gruppieren und dann zufällig den Block von drei Zeilen (aqu
, n/a
, terr
) mit jedem INDIV
verbundenen Stichprobe. Bitte beachten Sie, wie die CATEGORY
Bestellung in der Tabelle RESULT (z. B. aqu
, n/a
, terr
) beibehalten wird.
Ich brauche dplyr
zu verwenden, da diese Zufallsstichprobenverfahren Daten in eine größere for
Schleife-Feeds, die dplyr
Funktionen für verschiedene Berechnungen verwendet ... .und wie viele von Ihnen wissen dplyr
Masken verschiedene Funktionen in anderen Paketen. Ich entschuldige mich für das Kopieren und Einfügen von Rohtabellen in diese Frage, aber dies war der einfachste Weg, die Komplexität meines Datensatzes zu replizieren. Danke im Voraus.
DATA
SITE DATE INDIV CATEGORY BIOMASS LENGTH
GC Oct A aqu 0.0002 10
GC Oct A n/a 0 0
GC Oct A terr 0 0
GC Oct B aqu 0 0
GC Oct B n/a 0 0
GC Oct B terr 0 0
GC Oct C aqu 0.1875 20
GC Oct C n/a 0 0
GC Oct C terr 0.5424 30
GC Aug D aqu 7.4888 10
GC Aug D n/a 0 0
GC Aug D terr 100.9245 5
GC Aug E aqu 0.0001 1
GC Aug E n/a 0 0
GC Aug E terr 0 0
GC Aug F aqu 0 0
GC Aug F n/a 0 0
GC Aug F terr 20.593 10
NSVhi Oct A aqu 5.8713 5
NSVhi Oct A n/a 0 0
NSVhi Oct A terr 13.8651 3
NSVhi Oct B aqu 17.2288 2
NSVhi Oct B n/a 0 0
NSVhi Oct B terr 0 0
NSVhi Oct C aqu 22.7558 1
NSVhi Oct C n/a 0 0
NSVhi Oct C terr 24.7843 6
NSVhi Aug D aqu 0 0
NSVhi Aug D n/a 0 0
NSVhi Aug D terr 31.9222 7
NSVhi Aug E aqu 0.046 10
NSVhi Aug E n/a 0 0
NSVhi Aug E terr 0 0
NSVhi Aug F aqu 2.1156 5
NSVhi Aug F n/a 0 0
NSVhi Aug F terr 0 0
RESULT
SITE DATE INDIV CATEGORY BIOMASS LENGTH
GC Oct C aqu 0.1875 20
GC Oct C n/a 0 0
GC Oct C terr 0.5424 30
GC Oct C aqu 0.1875 20
GC Oct C n/a 0 0
GC Oct C terr 0.5424 30
GC Oct A aqu 0.0002 10
GC Oct A n/a 0 0
GC Oct A terr 0 0
GC Aug D aqu 7.4888 10
GC Aug D n/a 0 0
GC Aug D terr 100.9245 5
GC Aug F aqu 0 0
GC Aug F n/a 0 0
GC Aug F terr 20.593 10
GC Aug D aqu 7.4888 10
GC Aug D n/a 0 0
GC Aug D terr 100.9245 5
NSVhi Oct B aqu 17.2288 2
NSVhi Oct B n/a 0 0
NSVhi Oct B terr 0 0
NSVhi Oct C aqu 22.7558 1
NSVhi Oct C n/a 0 0
NSVhi Oct C terr 24.7843 6
NSVhi Oct A aqu 5.8713 5
NSVhi Oct A n/a 0 0
NSVhi Oct A terr 13.8651 3
NSVhi Aug D aqu 0 0
NSVhi Aug D n/a 0 0
NSVhi Aug D terr 31.9222 7
NSVhi Aug D aqu 0 0
NSVhi Aug D n/a 0 0
NSVhi Aug D terr 31.9222 7
NSVhi Aug D aqu 0 0
NSVhi Aug D n/a 0 0
NSVhi Aug D terr 31.9222 7
Danke Michael! Nach dem Lesen der Antworten wurde mir jedoch klar, dass meine ursprüngliche Frage nicht die Komplexität meines Problems widerspiegelte. Alle Lösungen für die aktualisierte Frage sind willkommen. Pass auf. – Vesuccio
@Vesuccio Anstelle von 'RB <- DATA [, unique (SAMPLE)]', mache 'RB <- unique (DATA [,. (SITE, DATE)])' und statt 'DATE [. ...)) ', do' DATA [RB [Beispiel (.N, rep = TRUE)], ..., on = c ("SITE", "DATUM")] '... Ich bin nicht 100 Sicher, das wird funktionieren, aber ich mag es nicht, dass du die Frage umgedreht hast und meine Antwort annulliert hast. – MichaelChirico
Entschuldigung, Michael. Ich habe nicht nachgedacht. Ich hätte nur eine neue Frage stellen sollen. Danke für deine Zeit. – Vesuccio