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

如何在R语言中从字符串列提取国家代码生成新列?

提取目标国家代码到独立列

针对你的数据框,可通过正则匹配提取to-和from-后的两位国家代码,以下是两种简洁的实现方式:

方法1:用stringr精准提取

借助str_extract配合正则表达式,分别定位to-后、-from前的目标内容,以及from-后、/summary前的内容:

library(stringr)
library(dplyr)

df_processed <- df %>%
  mutate(
    To_Country = str_extract(Page, "(?<=to-)\\w+(?=-from)"),
    From_Country = str_extract(Page, "(?<=from-)\\w+(?=/summary)")
  )

方法2:用tidyr拆分字符串

利用separate_wider_regex按照固定字符串模式拆分Page列,一次性提取两个国家代码:

library(tidyr)
library(dplyr)

df_processed <- df %>%
  separate_wider_regex(
    Page,
    patterns = c(
      prefix = ".+/to-",
      To_Country = "\\w+",
      middle = "-from-",
      From_Country = "\\w+",
      suffix = "/summary"
    ),
    remove = FALSE # 保留原Page列,无需保留可设为TRUE
  ) %>%
  select(-prefix, -middle, -suffix) # 移除拆分产生的临时列

处理后结果

运行上述任一代码后,数据框会新增To_Country和From_Country列,示例输出如下:

df_processed
#> # A tibble: 10 × 4
#>    Page                                    Count To_Country From_Country
#>    <chr>                                   <dbl> <chr>      <chr>       
#>  1 /es/import-340600-to-mx-from-de/summary   153 mx         de          
#>  2 /es/import-340600-to-de-from-mx/summary    78 de         mx          
#>  3 /es/import-071320-to-sv-from-cr/summary    72 sv         cr          
#>  4 /en/import-340111-to-ru-from-ir/summary    58 ru         ir          
#>  5 /en/import-870423-to-hk-from-de/summary    57 hk         de          
#>  6 /es/import-392049-to-mx-from-de/summary    55 mx         de          
#>  7 /es/import-080440-to-mx-from-es/summary    48 mx         es          
#>  8 /es/import-340600-to-mx-from-jp/summary    46 mx         jp          
#>  9 /en/import-852691-to-tr-from-ua/summary    42 tr         ua          
#> 10 /es/import-180620-to-mx-from-us/summary    42 mx         us

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:25:21