我希望获得您在处理以下数据集方面的想法和建议:
Start_Latitude Start_Longitude End_Latitude End_Longitude Date Avg_Speed
41.92446 -87.68654 41.93184 -87.67459 2020-06-11 6:00 40
41.90367 -87.63233 41.91600 -87.61911 2020-06-11 6:00 35
41.86468 -87.76746 41.82341 -87.69162 2020-06-11 6:00 54
41.96075 -87.74756 41.76543 -87.67459 2020-06-11 6:00 45
我有代表路段的变量:Start_Latitude、Start_Longitude 和 End_Latitude、End_Longitude,并且我有每个路段的平均速度。
我想为每个以纬度和经度开始并以纬度和经度结束的路段分配 Id,以便我可以将平均速度与另一个路段进行比较。
我想要的数据如下:
St_Lat_Long End_Lat_Long Date Avg_Speed ID
41.92446, -87.6865 41.93184,-87.67459 2020-06-11 6:00 40 1
41.90367,-87.63233 41.91600,-87.61911 2020-06-11 6:00 35 2
41.86468,-87.76746 41.82341,-87.69162 2020-06-11 6:00 54 3
41.96075,-87.74756 41.76543,-87.67459 2020-06-11 6:00 45 4
如何在 R 代码中分配 Id? 我有以下代码,为具有 Start_Latitude、Start_Longitude (2 个坐标)的一个空间点分配 ID:
Data$ID <- cumsum(!duplicated(df[1:2]))
Latitude Longitude Date Avg_Speed ID
41.92446 -87.68654 2020-06-11 6:00 40 1
41.90367 -87.63233 2020-06-11 6:00 35 2
41.86468 -87.76746 2020-06-11 6:00 54 3
41.96075 -87.74756 2020-06-11 6:00 45 4
另外,是否可以使用 4 个坐标在 map 上绘制所有路段。
最佳答案
以下是使用 base
处理帖子第一部分的方法:
数据
foo <- tibble::tribble(~Start_Latitude, ~Start_Longitude, ~End_Latitude, ~End_Longitude, ~Date, ~Avg_Speed,
41.92446, -87.68654, 41.93184, -87.67459, '2020-06-11 6:00', 40,
41.90367, -87.63233, 41.91600, -87.61911, '2020-06-11 6:00', 35,
41.86468, -87.76746, 41.82341, -87.69162, '2020-06-11 6:00', 54,
41.96075, -87.74756, 41.76543, -87.67459, '2020-06-11 6:00', 45)
代码
foo$St_lat_long = paste(foo$Start_Latitude, foo$Start_Longitude, sep = ", ")
foo$End_lat_long = paste(foo$End_Latitude, foo$End_Longitude, sep = ", ")
foo2 <- foo[,c(7,8,5,6)]
foo2$ID <- seq.int(nrow(foo2))
输出
St_lat_long End_lat_long Date Avg_Speed ID
41.92446, -87.68654 41.93184, -87.67459 2020-06-11 6:00 40 1
41.90367, -87.63233 41.916, -87.61911 2020-06-11 6:00 35 2
41.86468, -87.76746 41.82341, -87.69162 2020-06-11 6:00 54 3
41.96075, -87.74756 41.76543, -87.67459 2020-06-11 6:00 45 4
映射数据
您在帖子中提供了以下数据:
foo <- tibble::tribble(~Latitude, ~Longitude, ~Date, ~Avg_Speed, ~ID,
41.92446, -87.68654, "2020-06-11 6:00", 40, 1, 41.90367,
-87.63233, "2020-06-11 6:00", 35, 2, 41.86468, -87.76746,
"2020-06-11 6:00", 54, 3, 41.96075, -87.74756, "2020-06-11 6:00",
45, 4)
#> # A tibble: 4 x 5
#> Latitude Longitude Date Avg_Speed ID
#> <dbl> <dbl> <chr> <dbl> <dbl>
#> 1 41.9 -87.7 2020-06-11 6:00 40 1
#> 2 41.9 -87.6 2020-06-11 6:00 35 2
#> 3 41.9 -87.8 2020-06-11 6:00 54 3
#> 4 42.0 -87.7 2020-06-11 6:00 45 4
由reprex package于2020年6月21日创建(v0.3.0)
创建带有纬度和经度的 map
以下是使用 leaflet
包映射问题最后部分的方法:
library(leaflet) %>%
leaflet(foo) %>%
addTiles() %>%
addCircleMarkers(lat = ~Latitude,
lng = ~Longitude,
popup = paste("<b>Date:</b>", foo$Date, "<br>",
"<b>Avergae Speed:</b>", foo$Avg_Speed, "<br>",
"<b>ID:</b>", foo$ID, "<br>"))
由reprex package于2020年6月21日创建(v0.3.0)
输出
我在我的 RPubs 上发布了互动传单。 Here is a link
关于r - 在 R 代码中为路段(纬度经度)分配 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62480325/