1

私は非常に単純な要求を持っていますが、1 つのコード行を使用して処理することはできません。

私が望むのは、出力データフレームで、特定のデータフレームの列の一意の値 (因子のレベル) ごとにランダムに選択された行が1 つだけになるように、入力データフレームをサブセット化することだけです。

Ex私は持っています(v2は特定のデータフレームの列です)

   v1 v2
1   A  1                      
2   B  1      
3   C  2
4   A  1
5   B  2
6   B  1
7   B  1
8   C  2
9   D  1
10  E  1

そして、出力データフレームとして持ちたい:

   v1 v2
1   B  1                      
2   C  2  

事前にご提案いただきありがとうございます。

4

2 に答える 2

4

列内の一意の値を繰り返し処理し、各値の行インデックスを見つけて、 を使用してランダムに 1 つの行インデックスを選択できますsample。このような:

#  Set seed for reproducible results
set.seed(1)

#  Generate indices
ind <- sapply( unique( df$v2 ) , function(x) sample( which(df$v2==x) , 1 ) )

#  Subset data.frame
df[ ind , ]
#  v1 v2
#2  B  1
#5  B  2
于 2013-09-04T08:32:49.277 に答える