You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于含约束数据集构建路由矩阵:用R代码从Stop.Name列生成矩阵A

重构公交路由邻接矩阵A的R实现

嘿,我来帮你搞定这个公交路由矩阵的重构需求!根据你说的,咱们只靠Stop.Name列就能完成——这个列记录了公交一天内途经的站点顺序,正好用来构建站点间的邻接关系矩阵A(也就是路由矩阵,记录哪些站点之间有直接的公交连接)。

下面是具体的实现步骤和代码:

第一步:提取连续的站点配对

首先,我们需要从Stop.Name列里把每一组连续的站点对提取出来。比如如果站点顺序是「站A→站B→站C」,那我们要得到(站A,站B)和(站B,站C)这两组配对。

用基础R实现:

# 假设你的数据框是名为dbus的对象
# 生成连续站点对的数据集:前一个站点是from,后一个是to
stop_pairs <- data.frame(
  from = dbus$Stop.Name[-nrow(dbus)],  # 去掉最后一个站点
  to = dbus$Stop.Name[-1]              # 去掉第一个站点
)

用dplyr包实现(更直观):

如果你习惯用tidyverse系列的工具,用dplyr会更简洁:

library(dplyr)

stop_pairs <- dbus %>%
  mutate(
    from = lag(Stop.Name),  # 把前一行的站点作为from
    to = Stop.Name          # 当前站点作为to
  ) %>%
  slice(-1) %>%  # 第一行的from是NA,直接去掉
  select(from, to)  # 只保留需要的两列

第二步:构建路由矩阵A

有了站点配对后,我们就可以把这些关系转换成矩阵了。这个矩阵的行和列都是所有唯一的站点,矩阵中的值可以表示「从行站点到列站点的公交班次次数」,或者只是标记「是否存在直接连接」。

基础R构建完整矩阵:

# 获取所有唯一的站点名称
unique_stops <- unique(dbus$Stop.Name)
stop_count <- length(unique_stops)

# 初始化一个全0的矩阵,行和列都用站点命名
route_matrix <- matrix(
  0,
  nrow = stop_count,
  ncol = stop_count,
  dimnames = list(unique_stops, unique_stops)
)

# 遍历站点配对,给对应的矩阵位置赋值(累加次数)
for (i in 1:nrow(stop_pairs)) {
  from_stop <- stop_pairs$from[i]
  to_stop <- stop_pairs$to[i]
  route_matrix[from_stop, to_stop] <- route_matrix[from_stop, to_stop] + 1
}

# 查看最终的路由矩阵
print(route_matrix)

更简洁的方式(用table函数):

如果只是想快速得到站点间的连接次数,可以直接用table函数:

# 直接生成站点配对的计数表
route_matrix_simple <- table(stop_pairs$from, stop_pairs$to)

# 如果需要把所有站点都包含(包括没有任何连接的站点),可以用xtabs扩展:
route_matrix_full <- as.matrix(
  xtabs(~ from + to, data = stop_pairs,
        subset = from %in% unique_stops & to %in% unique_stops)
)

补充说明

  • 矩阵中的route_matrix[X,Y]表示公交从站点X直接开到站点Y的次数,如果你的数据集里有多次同一路线的记录,这个值会自动累加。
  • 如果你只需要标记「是否存在连接」,把循环里的+1改成直接赋值为1就行。
  • 如果你的dbus数据框里有多条不同的公交路线(比如不同日期或不同线路ID),可以先按线路分组再执行上面的步骤,这样就能得到每条线路单独的路由矩阵。

内容的提问来源于stack exchange,提问作者user177196

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:24:21