私のデータフレームには、type("A"または"B")、xvar、経度、緯度の4つの列があります。次のようになります。
type xvar longitude latitude
[1,] A 20 -87.81 40.11
[2,] A 12 -87.82 40.12
[3,] A 50 -87.85 40.22
....
[21,] B 24 -87.79 40.04
[22,] B 30 -87.88 40.10
[23,] B 12 -87.67 40.32
[24,] B 66 -87.66 40.44
....
type = "A"には20行、type="B"には25,000行あります。私の仕事は、20個の「A」データポイントのxvarの値を、置換せずにタイプ「B」のXY空間にランダムに割り当てることです。たとえば、type = "A"の最初の観測値のように、xvar = 20は、[22、]、つまり(-87.88,40.10)にランダムに配置できます。私はこれを置き換えなしで行っているので、理論的には、このレプリケーションを25,000 / 20=1,250回実行できます。1,000回のレプリケーションが必要です。
そして、1つのランダムサンプルから1つの統計値を返す関数(たとえば、myfunc(xvar、longitude、latitude))があります。まず、1,000x1の空行列(たとえば、myresult)を作成します。
myresult <- array(0,dim=c(1000,1))
次に、ランダムサンプルごとに、関数(myfunc)を適用して統計を計算します。
for (i in seq(1:1000)) {
draw one sample, that has three variables: xvar, longitude, latitude.
apply my function to this selected sample.
store the calculated statistic in the myresult[i,]
}
Rでこれを行う方法を知りたいです(そしてMatlabにあるかもしれませんか??)ありがとう!
================================================== ===========
更新:@user。あなたのアイデアを借りて、以下は私が欲しいものです:
dd1 <- df[df$type == "B" ,]
dd2 <- df[df$type == "A" ,]
v <- dd2[sample(nrow(dd2), nrow(dd2)), ]
randomXvarOfA <- as.matrix(v[,c("xvar")])
cols <- c("longitude","latitude")
B_shuffled_XY <- dd1[,cols][sample(nrow(dd1), nrow(dd2)), ]
dimnames(randomXvarOfA)=list(NULL,c("xvar"))
sampledData <- cbind(randomXvarOfA,B_shuffled_XY)
sampledData
xvar longitude latitude
4 20 -87.79 40.04
7 12 -87.66 40.44
5 50 -87.88 40.10