2017-06-28 6 views
-2

私は、Azure ML(したがってRソリューションも可)で、列に基づいてデータをランダムに分割する方法を検討しています。その列の任意の値を持つすべてのレコード分割の片側または別の側に巻き上げる。たとえば、次のようにグルーピング列に基づいたデータの分割

+------------+------+--------------------+------+ 
| Student ID | pass | some_other_feature | week | 
+------------+------+--------------------+------+ 
|  1234 | 1 | Foo    | 1 | 
|  5678 | 0 | Bar    | 1 | 
| 9101112 | 1 | Quack    | 1 | 
| 13141516 | 1 | Meep    | 1 | 
|  1234 | 0 | Boop    | 2 | 
|  5678 | 0 | Baa    | 2 | 
| 9101112 | 0 | Bleat    | 2 | 
| 13141516 | 1 | Maaaa    | 2 | 
|  1234 | 0 | Foo    | 3 | 
|  5678 | 0 | Bar    | 3 | 
| 9101112 | 1 | Quack    | 3 | 
| 13141516 | 1 | Meep    | 3 | 
|  1234 | 1 | Boop    | 4 | 
|  5678 | 1 | Baa    | 4 | 
| 9101112 | 0 | Bleat    | 4 | 
| 13141516 | 1 | Maaaa    | 4 | 
+------------+------+--------------------+------+ 

許容出力50/50スプリット、私が選択した場合、言っていることから、2つの新しいデータセットになる学生ID列に基づいてグループ化する:

+------------+------+--------------------+------+ 
| Student ID | pass | some_other_feature | week | 
+------------+------+--------------------+------+ 
|  1234 | 1 | Foo    | 1 | 
|  1234 | 0 | Boop    | 2 | 
|  1234 | 0 | Foo    | 3 | 
|  1234 | 1 | Boop    | 4 | 
| 9101112 | 1 | Quack    | 1 | 
| 9101112 | 0 | Bleat    | 2 | 
| 9101112 | 1 | Quack    | 3 | 
| 9101112 | 0 | Bleat    | 4 | 
+------------+------+--------------------+------+ 

+------------+------+--------------------+------+ 
| Student ID | pass | some_other_feature | week | 
+------------+------+--------------------+------+ 
|  5678 | 0 | Bar    | 1 | 
|  5678 | 0 | Baa    | 2 | 
|  5678 | 0 | Bar    | 3 | 
|  5678 | 1 | Baa    | 4 | 
| 13141516 | 1 | Meep    | 1 | 
| 13141516 | 1 | Maaaa    | 2 | 
| 13141516 | 1 | Meep    | 3 | 
| 13141516 | 1 | Maaaa    | 4 | 
+------------+------+--------------------+------+ 

ここからは、これは基本的に層状分割とは反対で、両面に表現されたすべての生徒とランダムサンプルが得られることがわかります。

これを行ったAzure ML関数が好きですが、このような機能を提供するR関数またはライブラリがあるとは思いませんか?私が見つけたのはquestions about stratificationで、明らかにそれほど助けにならなかった。それは、学生がであることを倍に示し、新しい列で、元のデータフレームを返す

data.fold <- mutate(df, fold = sample(rep_len(1:2, n_distinct(Student ID)))[Student ID]) 

あなたはより多くのひだをしたい場合は、単に「1調整:

+1

「%in%」の「ユニークな」学生IDとサブセットの行だけを 'sample'します。 – alistaire

+0

@alistaireそれは意味をなさない、と私はそれを考えていないためにかわいいと感じる:/あなたが答えとしてそれを追加する気がしたら私はそれを受け入れるだろう – Jeff

答えて

0

あなたはTE、次のコマンドを使用することができます。2 '部分。

私は「独自のサンプル」を試みましたが、それは過去に私にとって常にうまくいかなかったのです。

関連する問題