2016-08-08 65 views
1

I-Datenrahmen "df" haben folgende:eine Anzahl von Datenrahmen von Schleife

df=data.frame(time=as.factor(rep(c(0.01*(1:100)),each=49)), 
      roi=rep(1:49,100), 
      area=runif(4900, 5.0, 7.5),hours=(rep(1:10,each=490))) 

Die df ist aufgeteilt in 10 kleinere Datenrahmen basierend auf der Spalte "Stunden"

x=split(df,df$hours) 

In wobei jeder Teildatenrahmen eines neuer Datenrahmen „br [i] folgt hergestellt:

br1=data.frame(x$`1`[c(1,round(nrow(x$`1`)*(1:4)/4)),]) 
br1$Min=c(0,15,30,45,60) 
br2=data.frame(x$`2`[c(1,round(nrow(x$`2`)*(1:4)/4)),]) 
br2$Min=c(0,15,30,45,60) 
... 
br10=data.frame(x$`10`[c(1,round(nrow(x$`10`)*(1:4)/4)),]) 
br10$Min=c(0,15,30,45,60) 

Die Frage ist, wie man 10 Datenrahmen aus‚br‘automatisch mit Wiederhole solche obigen Befehle in vielen Zeiten?

Vielen Dank für jede Antwort!

+1

vielleicht 'lapply (x, Funktion (x) x [c (1, rund (nrow (x) * (1: 4)/4))])' – mtoto

Antwort

4

Versuchen:

lapply(split(df,df$hours), function(x) { 
    br=data.frame(x[c(1,round(nrow(x)*(1:4)/4)),]) 
    br$Min=c(0,15,30,45,60) 
    return(br) 
}) 
+0

@ Abdou: Vielen Dank! –

+1

Sie sind mehr als willkommen! – Abdou