問題

私は大きなデータセットを持っています。私は現在、データセットを3つの異なるデータフレームに分けようとしています。これは、さまざまなテストポイントに使用されます。

 ind<-sample(3, nrow(df1), replace =TRUE, prob=c(0.40, 0.50, 0.10))
df2<-as.data.frame(df1[ind==1,1:27])
df3<-as.data.frame(df1[ind==2, 1:27])
df4<-as.data.frame(df1[ind==3,1:27])
 

ただし、df1の最初の列は請求書番号であり、複数の行は返品と間違いが含まれるため、同じ請求書番号を持つことができます。データをランダムに分割する方法を見つけようとしていますが、すべての行を同じ請求書番号で一緒に保持します。

どのように私はこれを達成することができます上の任意の提案?

  ベストアンサー

行をサンプリングする代わりに、一意の請求書番号をサンプリングし、その請求書番号で行を選択できます。

 ## Some sample data
df1 = data.frame(invoice=sample(10,20, replace=T), V = rnorm(20))

## sample the unique values
ind = sample(3, length(unique(df1$invoice)), replace=T)

## Select rows by sampled invoice number
df1[df1$invoice %in% unique(df1$invoice)[ind==1], 1:2]
   invoice           V
2        8 -0.67717939
6        9 -0.89222154
9        8 -0.71756069
14       8 -0.03539096
15       2  0.38453752
16       9 -0.16298835
17       9 -0.30823521
20       2 -0.60198259
 

  同じタグがついた質問を見る

r