2016-06-13 13 views
0

私はこの問題を解決するために、{plyr}パッケージでddply()functinを使用するとランダムなサンプリングが行われます:R

私はオブジェクト(項目)に関係なく、別の変数(場所)内の1つの変数(属性)を置換しようとしているデータセットを持っています。ここで

は、データの抜粋です:

  ID_FIELD SPCD  Total 
       1177 833 428.286591 
      11383 691 1175.846712 
      24081 316 137.042979 
      11383 318 177.335481 
       1177 71 166.629921 
      24081 110 1170.012216 
       1177 12 8.379811 
      30284 541 585.039300 
      24081 746 188.808428 
      24081 531 196.142482 
       1177 111 47.258113 
       1177 12 198.443376 
      11383 827 16.095224 

ddply()機能を使用してplyrパッケージに、Rのバージョン3.2.0で、私は次のコードを提出しました:ここ

ddply(data,.(Total,ID_FIELD),sample) 

を、 ID_FIELD(場所)内のSPCD(アイテム)にまたがってTotal(属性)を置き換えようとしていて、ddply()コードを2回連続して実行した場合、結果はbeforと全く同じですe、これは私が望むものではありません。私は、このプロセスを各機能の実行時にランダム化したいと考えています(つまり、の新しいシャッフル、それぞれのサブミットはddply()です)。

これを実現する手掛かりはありますか?アプリケーションが大規模なデータセットを持っていることを考えると、迅速なプロセスも高く評価されます。私は私の知恵の終わりです。

多くのありがとうございます。

答えて

2

使用plyr:

ddply(data, .(ID_FIELD), function(df) df[sample(nrow(df)),]) 

使用dplyr、サンプリング機能を持つ供給:

library(dplyr) 
data %>% group_by(ID_FIELD) %>% sample_frac 
+0

あなたは間違ったフィールドで並べ替えます。更新された回答をご覧ください。 –

+0

これらのコードを提供していただきありがとうございますが、私の問題は解決しません。これらのコードは、観測の順序を行ごとにシャッフルし、 "ddply(...)"または "data%>%..."行の各サブミッションで同じ方法でシャッフルします。私が上で提供したデータを見ると、(ランダムに)何かしたいのは、一例として、ID_FIELD内のSPCD全体の合計の値をシャッフルすることです。たとえば、ID_FIELD(11383)内の合計(1175.847,16.095、および177.335)の値は、毎回SPCD(691,318、および827)の間でシャッフルされます。これが問題を明確にすることを願っています。 – Andrew

+0

間違ったフィールドで置換しています。更新された回答をご覧ください。 –

関連する問題