#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. Для общих данных можете ли вы добавить, каков ваш ожидаемый результат?