r - 在 R 代码中为路段(纬度经度)分配 ID

标签 r data-mining latitude-longitude spatial

我希望获得您在处理以下数据集方面的想法和建议:

 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/

相关文章:

Java,将纬度/经度转换为 UTM

python - 从多列中过滤和替换

r - 在小标题中显示测量单位

java - 用于表示决策树归纳的数据结构

machine-learning - 梯度下降和牛顿梯度下降有什么区别?

java - 将像素位置转换为纬度/经度,反之亦然

r - 创建围绕日期的时间窗口

c++ - 如何告诉 C++ 根据索引指示符放弃 vector 中的某些元素

java - 机器学习挑战 : diagnosing program in java/groovy (datamining, 机器学习)

java - Android中如何不使用getLastKnownLocation方法获取当前经纬度?