2017-05-01 1 views
0

Hier ein Beispiel für meine data.frame und nehmen wir an, dass die date col Tage darstellt:Monte-Carlo-Simulation - Erstellen 100 data.frames mit Reihen gruppiert zufällig mit einer festen Anzahl von aufeinander folgenden Tagen

df = read.table(text = 'ID date 
a 1 
a 2 
a 3 
a 4 
a 7 
a 12', header = TRUE) 

Also, meine Tage hier reichen von 1 bis 12 und ich möchte 100 data.frames schaffen, wo für jedes die date (und ID) Spalte zufällig durch 3 folgende Tage gruppiert wird.

z.B.

df1

ID date group 
    a 1 1 #group 1 = 1, 2, 3 
    a 2 1 
    a 3 1 
    a 4 2 # group 2 = 4, 5, 6 
    a 7 3 # group 3 = 7, 8, 9 
    a 12 4 # group 4 = 10, 11, 12 

DF2

ID date group 
    a 1 4 
    a 2 1 #group 1 = 2, 3, 4 
    a 3 1 
    a 4 1 
    a 7 2 #group 2 = 5, 6, 7 --- group 3 = 8, 9, 10 
    a 12 4 # group 4 = 11, 12 and start again from the beginning 1 

DF3

ID date group 
    a 1 1 
    a 2 1 
    a 3 2 #group 2 = 3, 4, 5 
    a 4 2 
    a 7 3 #group 3 = 6, 7, 8 -- group 4 = 9, 10, 11 
    a 12 1 #group 1 = 12, 1, 2 

etc ...

beachte, dass die group col Gruppen die Reihen von 3 durch nachträgliches d Berücksichtigung ays, die nicht unbedingt im data.frame erscheinen und die Zufälligkeit des ganzen Tricks ist der Starttag der Gruppe 1.

Haben Sie einen Vorschlag?

Antwort

0

Nicht sicher, aber Sie können eine leere Liste erstellen und neuen Datenrahmen ähnlich wie Ihr Beispiel füllen:

set=list() 
for(i in 1:100) { set[[i]] = cbind(df,group=sample(rep(c(1,2),each=3))) } 
+0

Hallo und danke. die Sache ist, dass meine Gruppen nachfolgende Stücke von 3 aufeinander folgenden Daten sein müssen – aaaaa

+0

Ich versuche, Ihr Beispiel zu verstehen, ist die nachfolgende Stichprobe von Daten abhängig von der Datumsspalte? Oder hängt es von der Gruppierungsvariablen ab, cq, wenn es vier eindeutige "Gruppen" gibt, dann haben Sie 12 aufeinander folgende Daten. – timfaber

+0

danke, ja! Die nachfolgende Stichprobe von Daten hängt von der Datumsspalte ab. zB df1: Gruppe 1 = Daten 1, 2, 3; etc ... Ich muss nur mein data.frame um 3 aufeinander folgende Daten 100 mal basierend auf dem zufälligen Start der Gruppe 1 – aaaaa

Verwandte Themen