0

次のようなデータフレームがあります

c1 c2
1 2
1 3
2 4
2 5
2 2
3 1
3 2
...

一意の c1 値を取得したいのですが、同じ c1 値を持つ行が複数ある場合、c2 を同じ確率で選択できます。たとえば、最終結果は次のようになります。

c1 c2
1 2
2 2
3 2
...

「c1の可能な値ごとにc2をランダムに選択する」ことが私が望むものです。

4

2 に答える 2

1

これを行う簡単な方法を次に示します。あなたのデータフレームがdfと呼ばれているとしましょう。

x = unique(df$c1);
y = sapply(x, function(arg)sample(df$c2[df$c1 == arg], 1));
new_df = data.frame(c1 = x, c2 = y);
于 2013-05-29T19:24:20.530 に答える
0

c2の一意の値ごとに の値をサンプリングする簡単な方法を次に示しc1ます。

aggregate(c2 ~ c1, dat, sample, 1) # dat is the name of you data frame

  c1 c2
1  1  2
2  2  4
3  3  1
于 2013-05-31T09:20:22.997 に答える