2016-08-08 80 views
1

撥打號碼dataframes的我有數據幀「DF」以下:通過使用循環

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))) 

對DF被分成

x=split(df,df$hours) 

在基於列「小時」 10個小的數據幀每個子數據幀一個新的數據幀「br [i]製作如下:

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) 

問題是如何自動製作10個數據幀」br「在很多時候重複上述命令?

非常感謝您的回覆!

+1

也許'lapply(X,函數(X)×[C(1,圓(nrow(X)*(1:4)/ 4)),])' – mtoto

回答

4

嘗試:

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

@阿卜杜:非常感謝! –

+1

歡迎您! – Abdou