これが私の小さな例です:..........。
Mark <- paste ("SN", 1:400, sep = "")
highway <- rep(1:4, each = 100)
set.seed (1234)
MAF <- rnorm (400, 0.3, 0.1)
PPC <- abs (ceiling( rnorm (400, 5, 5)))
set.seed (1234)
Position <- round(c(cumsum (rnorm (100, 5, 3)),
cumsum (rnorm (100, 10, 3)), cumsum (rnorm (100, 8, 3)),
cumsum (rnorm (100, 6, 3))), 1)
mydf <- data.frame (Mark, highway, Position, MAF, PPC)
PPCでは10未満、MAFでは0.3より大きいデータをフィルタリングしたいと思います。
# filter PPC < 10 & MAF > 0.3
filtered <- mydf[mydf$PPC < 10 & mydf$MAF > 0.3,]
グループ化変数(高速道路)があり、各マークには高速道路上の位置があります。たとえば、最初の5つのマークの高速道路1:
1.4 7.2 15.5 13.4 19.7
|-----|.......|.......|.....|.....|
"SN1" "SN2" "SN3" "SN4" "SN5"
ここで、各高速道路の位置に基づいて(高速道路の長さの違いを考慮して)各高速道路に適切に分散され、2つのピック間の最小距離が10以上になるように、約30個のマークを選択します。
編集:アイデア(ラフスケッチ)
この質問を解決する方法について少し考えることができました。感謝します。
編集:ここで私が理解できる何か:
# The maximum (length) of each highway is:
out <- tapply(mydf$Position, mydf$highway, max)
out
1 2 3 4
453.0 1012.4 846.4 597.6
min(out)
[1] 453
#Total length of all highways
totallength <- sum(out)
# Thus average distance at which mark need to be placed:
totallength / 30
[1] 96.98
高速道路1の場合、理論上のマークは次のようになります。
96.98, 96.98+ 96.98, 96.98+96.98+ 96.98, ........till it is less
than maximum (length )for highway 1.
したがって、理論的には、96.98ごとにマークを選択する必要があります。しかし、高速道路に配置されたマークは、
注:マークの選択の合計結果は、正確に30(約30)である必要はありません。