2017-05-10 14 views
0

私は、複数年にわたる観測を含む気象データセットを持っています。私がしたいのは、ある年のサブデータセットに私のオリジナルのデータセットを一般的にサブセット化することを可能にする何らかのループを作成することです。dplyrを使用して反復データフレームを作成しますか?

Weather_Dataというデータセットを呼び出してみましょう。ここではいくつかの簡単な例のデータがあります:ループのいくつかの並べ替えを作成しようとして

Weather_Data 

Year GPS_Coord 
2012 x1 
2012 x2 
2013 x3 
2013 x4 
2014 x5 
2014 x6 
2015 x7 
2015 x8 

、私はこのようなコードスニペットを開始しました:

Weather_Data_2012<-Weather_Data%>%filter(Year=="2012") 

このコードは正常に動作します。ある種のループを作成しようとすると、しかし、私はこのような何かをやってみました:

Year_list<-list() 
Year_sub<-as.character(c(2012:2015)) 

    for (i in 1:length(Year_sub)){ 
     Year_list[[i]]<-Weather_Data%>%filter(Year=="i")  
} 

私はこのコードを実行すると、私はこの出力で終わる:だから

A tibble: 0 × 11 

、明確にループは意図したとおりに動作しませんでした!

Year_list[[1]] 

Year GPS_Coord 
2012 x1 
2012 x2 

    Year_list[[2]] 

Year GPS_Coord 
2013 x3 
2013 x4 



    Year_list[[3]] 

Year GPS_Coord 
2014 x5 
2014 x6 

Year_list[[4]] 

Year GPS_Coord 
2015 x7 
2015 x8 

任意のヒント:ここで

は、私はこのコードを経由して達成したい何ですか?ありがとう。

+0

'== Year_sub [iは] '' == "i" 'の代わりに' Year_sub'年リストの 'i'要素にアクセスしてください。 – Lamia

+7

このようなリストを作成する必要がありますか?私は 'group_by(年)'が同じ結果をより簡単に達成するかもしれないと思っています。それは 'dplyr'の各サブセットの分析を行う標準的な方法です。 – Marius

+7

私はMariusに同意します - 既にdplyrを使用していて、 'group_by'機能を持っていれば無意味です。また、 'split(Weather_Data、Weather_Data $ Year)'はパッケージを一切使用しないで意図した結果を得られます。 – thelatemail

答えて

1

lapply定義された関数にそれぞれの値を渡す最初の引数を反復処理、および結果のリストを作成しますが、thelatemailのスプリット@より良いあなたがする必要がある

lapply(unique(df$Year), function(yr) {df[df$Year==yr,]}) 
関連する問題