2016-08-08 15 views
1

を使用して、データフレームの数を行いますIは、次のデータフレーム「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のより小さいデータフレームに分割され

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) 

次のように、各サブデータフレームは1つの新しいデータフレーム "br [i]"が自動的に作成されます。上記のようなコマンドを何度も繰り返していますか?

お返事ありがとうございました!

+1

おそらく 'lapply(X、関数(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

関連する問題