3

これは私の最初の投稿ですので、ご容赦ください。以下は私のデータの小さなサンプルです。私の実際のデータセットには 4,000 を超える個別の ID があり、各 ID には 1 ~ 200 ドルの金額が割り当てられています。

ID   Dollars
001  17000
001  18000
001  23000
002  64000
002  31000
003  96000
003  164000
003  76000

私が本質的にやろうとしていることは、例を使用して最もよく説明できます。IDごとに5つのランダムサンプルを生成し、置換します。各サンプルのサイズは、ランダムにサンプリングされた 5 つまたは 5 つのドルの値になります。私の最終的な結果は、20,000 の個別のサンプル (ID ごとにランダムに選択された 5 つの金額を含む 4000 ID ごとに 5 つのサンプル) になります。これは、各サンプルのドルの分布を同じ ID を持つ仲間のサンプルと比較するために行っています。

現時点では、以下に示すコードを使用してそのような答えを得ようとしています。また、このスクリプトを実行すると、「結果はすべてアトミックでなければなりません」というエラーが表示されることにも注意してください。追加の手順を追加する必要があるかどうか、または何を追加する必要があるかわかりません。

x <- function(func)
     {
      func<-(lapply(1:5, function(i)
        sample(data$Dollars, size=5, replace=TRUE)))
     }
     grouped.samples<-ddply(data,.variables="ID",.fun=x)

私が提起した質問が不明確であった場合は、事前に申し訳ありません。自分が抱えている問題を明確にするのに苦労しました。

よろしくお願いいたします。

4

5 に答える 5

4

この質問への回答の1つと同じように、dplyrソリューションを追加すると思いました。sample_n

require(dplyr)
dat1 %>%
    group_by(ID) %>%
    do(sample_n(., 5, replace = TRUE))

編集:

詳細についてヘルプを調べた後、関数はグループ内で直接動作する必要sample_nがあることに気付きました(つまり、 なしで)。これは既知の問題です。sample_ndo

于 2014-06-27T21:38:39.963 に答える
0

問題を理解していれば、これで十分かもしれません:

sapply(unique(data$ID), function(x) sample(data$Dollars, 5, replace=T))
于 2014-06-27T21:29:02.383 に答える