2016-04-25 2 views
-3

はるかに大きなデータフレームのサブセットである多くの新しいデータフレームをRで作成します。元のデータフレームには15個の列(例:ao)があります。 - 3番目の列の値で各部分集合を設定したい(例:1つの部分集合はc == '111_11111'、次の部分集合はc == '111_10101' )(列cの値は連続していません)。新しいサブセッティングデータフレームを作成する機能

これまでのところ、私は次のようしている:

values <- unique(df$c) 

for (i in 1:length(values)) { 
    assign(paste0("df", i), df[df$c == values[i],]) 
} 

があるのでこれは、できるだけ多くのデータフレームを作成します。

data <- c([values of column c]) 
function1.all <- function(x){ 
    a <- numeric(length(x)) 
    for(i in seq_along(x)){ 
    a <- subset(main_data_frame,c==i) 
     } 
    a 
    } 
+3

おそらく '?split'を見てください。 – Frank

+0

あなたはどうしたいですか? plyrまたはdplyrパッケージをチェックして、data.frameを変数で分割し、次にそれぞれにさまざまな処理を行います。 – Nova

答えて

0

c colの要素を使用していない場合、出力としてのリスト。私は新しい変数を作るよりもリストを大きくすることができるので、比較的大量のデータフレームを格納するリストを好む。

私は詳細にコードの各ステップの上に行くよ:

はあなたの識別子列で一意の値を検索します。あなたの場合、フォーマット(### _ #####)で。

un <- unique(main_data_frame[,"c"]) 

内部にすべてのデータフレームを格納するリストを作成します。このリストの長さはユニークなIDの量に等しく、ユニークなデータフレームの量にも等しい。

many.frames <- vector(mode = "list", length = length(un)) 

最後に、サブセット機能を使用してmain_data_frameからアイテムを引っ張って、独自のリストを反復します。あなたは基本的に、あなたのユニークなIDを持つすべての行をこの新しいデータフレームに引き出します。あなたが使用することもでき

for (i in 1:length(un)) { 
    many.frames[[i]] <- subset(main_data_frame, c == un[i]) 
} 

many.frames[[i]] <- main_data_frame[,main_data_frame$c==un[i]] 

それらのいずれかにアクセスするには、nはIDの指標であるmany.frames [[N]]を、使用することができます。 id、many.frames [["### _ #####]]]を引っ張りたい場合は、引用符で囲みます。

+1

このコードで質問に答えるかもしれませんが、_why_および/または_how_に関する追加のコンテキストを に追加すると、 と回答すると、その質問は長期間の 値を大幅に改善します。あなたの答えを[編集]して、説明を加えてください。 –

+0

c列の値の形式は### _ #####(例:111_12123) –

+0

トビーに感謝します。 アマンダ、このサブセットを使ってdata.frameにアクセスできるはずです: many.frames [["111_11111"]] – Heymans

-1

は、データフレームがdfと呼ばれ、関連する列がc命名されたと仮定すると、 df $ cの一意の値。それぞれdf1、df2などとなります。

+0

これは、データフレームの最初の2つの列のみを表示します。私はサブセット化データフレームが、c == "each unique value"に対応する値を持つ15個の列すべてを表示する必要があります。 –

+0

いいえ、すべての列が各df1、df2などに保持されます。もう一度確認できますか? – radiumhead

関連する問題