Может ли R успешно выполнить подсчет, когда две точки x и y находятся на определенном расстоянии друг от друга?

#r

#r

Вопрос:

Я немного борюсь. Я пытаюсь переместить данные X и Y в график. Затем я хотел бы, чтобы R дал мне подсчет, когда две координаты X, Y находятся в пределах 12 единиц друг от друга. Кроме того, я бы хотел, чтобы вычислялось не диагональное расстояние, а расстояние X1-X2, Y1-Y2. Я не уверен, как это сделать. Это то, что у меня есть до сих пор.

 View(D1.B1.Green)
Green <- D1.B1.Green
Green
Green <- Green[, 6:7]
Green
as.data.frame(Green)
Red <- D1.B1.Red
Red
Red <- Red[, 6:7]
Red
as.data.frame(Red)
combine <- rbind(Red, Green)
combine
#combine=cbind(x,y) #takes and combines dataframe values 
plot(combine) #plots aggregated data 
Yellow = as.matrix(dist(combine)) #calculates distance data of df into matrix
Yellow
neighbors=which(Yellow < 12, arr.ind=T) #A vertex is a neighbor of another one (in other words, the two vertices are adjacent), if they are incident to the same edge.
neighbors= neighbors[neighbors[,1]!=neighbors[,2]] #removes self-self relations
points(combine[neighbors,], col="red" ) #distinguishes red dots that are x euclidean distance away
Yellow
sum(Yellow < 12, na.rm = TRUE)
combine
 

Я не уверен, что не так, он успешно отображает точки, но не указывает, когда есть точки на расстоянии менее 12 друг от друга. Кроме того, подсчет, который он мне дает, — это общее количество точек, а не когда одна точка находится на расстоянии менее 12 друг от друга.

Мои данные выглядят так Данные

 > dput(Green)
structure(list(XStart = c(265L, 967L, 1325L, 1169L, 435L, 916L, 
558L, 197L), YStart = c(114L, 116L, 385L, 438L, 499L, 580L, 666L, 
740L)), class = "data.frame", row.names = c(NA, -8L))
> dput(Red)
structure(list(XStart = c(105L, 250L, 586L, 406L, 136L, 867L, 
962L, 721L, 522L, 14L, 462L, 748L, 532L, 734L, 1301L, 559L, 1094L, 
641L, 982L, 217L, 633L, 340L, 138L, 1150L, 331L, 596L, 253L, 
177L, 187L, 311L, 615L), YStart = c(0L, 0L, 0L, 33L, 51L, 162L, 
193L, 195L, 200L, 209L, 213L, 221L, 283L, 289L, 293L, 306L, 350L, 
364L, 375L, 423L, 472L, 548L, 588L, 592L, 597L, 684L, 705L, 744L, 
814L, 870L, 1032L)), class = "data.frame", row.names = c(NA, 
-31L))
 
 > neighbors=which(Yellow < 12, arr.ind=T) #A vertex is a neighbor of another one (in other words, the two vertices are adjacent), if they are incident to the same edge.
> neighbors= neighbors[neighbors[,1]!=neighbors[,2]] #removes self-self relations
> points(combine[neighbors,], col="red" ) #distinguishes red dots that are x euclidean distance away
> Yellow
            1         2         3         4          5         6         7         8         9
1     0.00000  145.0000  481.0000  302.8036   59.68249 779.03017 878.46343 646.12770 462.48135
2   145.00000    0.0000  336.0000  159.4522  124.88795 637.91300 737.69438 509.77054 337.61517
3   481.00000  336.0000    0.0000  183.0000  452.88078 324.35320 422.64051 237.17082 209.99048
4   302.80357  159.4522  183.0000    0.0000  270.59933 478.70868 578.56374 354.21604 203.33470
5    59.68249  124.8879  452.8808  270.5993    0.00000 739.37947 838.11694 602.46245 413.75959
6   779.03017  637.9130  324.3532  478.7087  739.37947   0.00000  99.92998 149.68300 347.08644
7   878.46343  737.6944  422.6405  578.5637  838.11694  99.92998   0.00000 241.00830 440.05568
8   646.12770  509.7705  237.1708  354.2160  602.46245 149.68300 241.00830   0.00000 199.06280
9   462.48135  337.6152  209.9905  203.3347  413.75959 347.08644 440.05568 199.06280   0.00000
10  227.95175  315.2412  608.9869  429.6976  199.61964 854.29386 948.13501 707.13860 508.07972
11  415.71384  300.5212  246.4650  188.5099  364.03297 408.19848 500.39984 259.62473  61.39218
12  679.91911  544.8348  274.0164  390.2666  635.17242 132.82319 215.82400  37.48333 226.97357
13  512.26751  399.5160  288.1059  279.9571  458.95534 356.18254 439.31765 208.48261  83.60024
14  692.21528  563.7171  324.6922  416.0769  643.62101 183.89671 247.38634  94.89468 229.92390
15 1231.36713 1091.0774  772.7056  932.0005 1189.86932 453.33983 353.44165 588.22105 784.53171
16  547.49612  434.8758  307.1889  312.9505  493.91700 340.00000 418.54271 196.37973 112.27199
17 1049.10486  913.6936  616.8987  757.5177 1003.57611 294.74226 205.11704 403.92326 591.34085
18  647.91357  534.2069  368.1318  405.9384  594.13298 303.11714 363.70593 186.97861 202.62527
19  953.81025  822.4652  545.3815  669.8806  905.92053 242.06198 183.09560 317.05047 492.16359
20  437.57628  424.2853  561.3288  433.3832  380.71643 700.44343 779.69545 553.17267 377.82800
21  708.21466  607.8429  474.3343  494.2166  651.34476 388.40185 431.37223 290.64239 293.77713
22  596.26253  555.3413  600.6829  519.2119  537.23831 653.24192 716.17665 519.39388 392.71873
23  588.92529  598.5716  739.2212  616.3189  537.00372 844.34412 913.78389 703.09174 545.89376
24 1201.03664 1077.2483  817.6552  930.6003 1149.29413 514.77082 441.07256 584.50834 740.30264
25  638.34552  602.4699  649.1795  568.9648  579.77668 690.30501 749.25096 560.09285 440.55647
> sum(Yellow < 12, na.rm = TRUE)
[1] 39
 

Комментарии:

1. Не могли бы вы предоставить набор данных, используя ‘dput’ и ожидаемый результат?

2. @jhyeon Я не знаком с ‘dput’ и ожидаемым результатом, не могли бы вы уточнить? Спасибо за любые советы

3. т.Е. dput (зеленый) поможет совместно использовать ваши наборы данных. Ваш ожидаемый результат — это буквально ваш ожидаемый результат с помощью логики.

4. @jhyeon Я отредактировал сообщение, пожалуйста, дайте мне знать, если это поможет!

5. Для общих данных можете ли вы добавить, каков ваш ожидаемый результат?