2

地域ごとに 1 つのランダムなサイトを取得し、新しいデータ フレームを作成して、すべてのサイトがサンプリングされるまでこれらのプロセスを繰り返します。したがって、各データ フレームには、同じ地域の同じサイトは含まれません。

私の実際のデータ フレームのいくつかの地域には、他の地域よりも多くのサイトがあります (地域 C には 4 つのサイトがあります)。これらの行を削除したい (おそらく、複数のデータ フレームを作成する前にこれを行う必要があります)。

データ フレームの例を次に示します (実際のデータ フレームには 100 を超えるリージョンとリージョンごとに 10 を超えるサイトがあります)。

mydf <- read.table(header = TRUE, text = 'V1 V2 Region Site 
5 1 A X1
5 6 A X2
8 9 A X3
2 3 B X1
3 1 B X2
7 8 B X3
1 2 C X1
9 4 C X2
4 5 C X3
6 7 C X4')

次のコードを 3 回繰り返すと、特定の地域の同じサイトを含むデータ フレームが生成されます (2 番目と 3 番目のテーブルには、地域 A のサイト X2 があります)。

do.call(rbind, lapply(split(mydf, mydf$Region), function(x) x[sample(nrow(x), 1), ]))

  V1 V2 Region Site
A  8  9      A   X3
B  2  3      B   X1
C  6  7      C   X4

V1 V2 Region Site
A  5  6      A   X2
B  7  8      B   X3
C  9  4      C   X2

  V1 V2 Region Site
A  5  6      A   X2
B  3  1      B   X2
C  6  7      C   X4

すべてのデータ フレームにすべての地域が含まれるが、各データ フレームには固有の地域とサイトの組み合わせが含まれるように、複数のデータ フレームを作成する方法を教えてください。

編集:ここに予想される出力があります。これらを生成するには、最初のサンプリングで、すべてのリージョンからランダムに 1 つのサイト (行) を抽出し、データ フレームを作成します。2 回目のサンプリングでは、同じプロセスを繰り返しますが、特定の地域の同じサイトを描画することはできません。私が欲しいのは、Region-Site のユニークな組み合わせを含む独立したデータ フレームです。

V1 V2 Region Site
5 1 A X1
7 8 B X3
1 2 C X1

V1 V2 Region Site
5 6 A X2
3 1 B X2
4 5 C X3

V1 V2 Region Site
8 9 A X3
2 3 B X1
9 4 C X2
4

2 に答える 2