Re: [問題] 如何在座標上抓出特定範圍的資料

作者: celestialgod (天)   2015-10-30 23:06:59
示例如下,自行延伸:
library(pracma)
# circle
circleFunc = function(r, x0 = 0, y0 = 0, n.split = 1000){
cbind(r*cos(seq(0, 2*pi, length.out = n.split)) + x0,
r*sin(seq(0, 2*pi, length.out = n.split)) + y0)
}
squreArea = matrix(runif(1000), 100)
circlePoints = circleFunc(0.5, 0.5, 0.5)
inCicle = inpolygon(squreArea[,1], squreArea[,2],
circlePoints[,1], circlePoints[,2])
plot(squreArea[,1], squreArea[,2],
xlim = c(0,1), ylim = c(0,1), xlab = "x", ylab = "y")
lines(circlePoints[,1], circlePoints[,2], col = "blue")
points(squreArea[inCicle,1], squreArea[inCicle,2], col = "red")
http://i.imgur.com/H1vyxBa.png
我之前是365萬個點,是用Rcpp逐點處理的 (距離矩陣要開滿大的滿麻煩的)
如果點不多的話,用inpolygon很快XD
※ 引述《allen63521 (GoGoPadres)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]: 想要分析位在某些目標附近的資料
: 手上有一筆關於不動產成交的資料,內容包含成交價格、坪數、該房屋位置的橫、縱座標
: 我想要用散佈圖把所有data的橫、縱座標在平面座標上排出來,並且把幾個目標定位在座標上,去討論這幾個目標附近(可能是一個圓或是矩形範圍內)的房屋成交價
: 目前的想法是:
: 如果想討論的範圍是圓,可以對"該目標跟所有data"去算點和點之間的距離
: 再從所有算出來的距離中挑比較近(抓某個比例)的那些房子出來觀察
: 但這個方法在目標不只有一個的時候可能就會變得比較麻煩,因為要把"每個目標"和"每棟房子"的組合都算過
: 想要請問有沒有可能做到:
: 以每個目標為圓心,設定一個圓(先不考慮怎麼決定半徑大小),讓系統去判定有哪些房子是落在這些範圍裡面的,就可以直接把他們抓出來看
: [關鍵字]:
: 範圍內的資料
作者: allen63521 (GoGoPadres)   2015-10-31 12:05:00
感謝回覆,我先摸摸看好了

Links booklink

Contact Us: admin [ a t ] ucptt.com