r - 相同地考虑往返

标签 r

我很难在 R 中对路径变量进行编码,当路径相同时它采用唯一值,而不管起点和终点(起点是变量路径的前 4 个字符目的地是最后一个 4)。基础如下:

base <- data.frame(route = c("SBAA - SBBE", "SBAA - SBBR", "SBAA - SBCI",
                            "SBBE - SBAA", "SBBE - SBBR", "SBBR - SBBE"),
                   seats = c(1231, 1021, 715, 989, 759, 695))
base <- as_tibble(base)

# A tibble: 6 x 2
      route        seats
      <chr>           <dbl>
    1 SBAA - SBBE     1231
    2 SBAA - SBBR     1021
    3 SBAA - SBCI      715 
    4 SBBE - SBAA      989 
    5 SBBE - SBBR      759 
    6 SBBR - SBBE      695 

我想到了做一个转换来生成变量代码:

code <-as.numeric (as.factor (route))

但是,相同路线(相同的转机机场)的输出将不同,但起点和目的地机场相反。例如,“SBAA - SBBE”和 SBBE - SBAA“ 应该有相同的代码,但看起来像这样:

  route           seats       code
  <chr>           <dbl>       <dbl>
1 SBAA - SBBE     1231         1
2 SBAA - SBBR     1021         2
3 SBAA - SBCI      715         3
4 SBBE - SBAA      989         4
5 SBBE - SBBR      759         5
6 SBBR - SBBE      695         6 

我需要具有相同连接机场的航线具有相同的代码,以便代码变量返回以下结果:

  route           seats       code
  <chr>           <dbl>       <dbl>
1 SBAA - SBBE     1231         1
2 SBAA - SBBR     1021         2
3 SBAA - SBCI      715         3
4 SBBE - SBAA      989         1
5 SBBE - SBBR      759         4
6 SBBR - SBBE      695         4

请注意,“SBAA - SBBE”的代码与“SBBE - SBAA”相同。感谢您的帮助。

最佳答案

如果我们提取单词,sortpaste然后将factor做成integer,它应该工作

library(dplyr)
library(stringr)
library(purrr)
base %>% 
    mutate(code = as.integer(factor(map_chr(str_extract_all(route, 
          "\\w+"), ~ str_c(sort(.x), collapse=" - ")))))

关于r - 相同地考虑往返,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884671/

相关文章:

R:K 均值聚类与社区检测算法(加权相关网络)- 我是否将这个问题过于复杂?

r - sparklyr hadoop配置

r - Dplyr:重新编码数字和字符向量

r - 如何在ggplot2中为矩形rasterGrob添加边框?

c - 使用 C 函数获取不同 R 对象的类属性时不一致

: warning : The `x` argument of `as_tibble.matrix()` must have unique column names if `.name_repair` is omitted as of tibble 2. 0.0

读取现有连接对象的编码

r - 控制 geom_line() 图表中的日期(x 轴)间隔

mysql - 带条件调用多列的 SQL 查询(带 NAs)

r - 使用非 GPL 代码分发 GPL 代码