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

R语言:如何将含地点与日期的字符列拆分为地点和日期列

解决方法

因为你的字符串始终以「月份 数字.」格式的日期结尾,我们可以用正则表达式精准匹配日期部分,避免丢失月份信息,同时拆分出地点列。

方法1:使用stringr包拆分

library(stringr)

locations <- c("Molino November 28.", "Wolf River Bridge December 4.")
df <- data.frame(locations)

# 提取日期部分(匹配月份+空格+数字+末尾的点,再去掉点)
df$Date <- str_remove(str_extract(df$locations, "[A-Z][a-z]+ \\d+\\."), "\\.")
# 提取地点部分(去掉日期及前面的空格,再清理多余空格)
df$Location <- str_trim(str_remove(df$locations, "[A-Z][a-z]+ \\d+\\."))

# 整理成目标格式
df <- df[, c("Location", "Date")]
print(df)

运行后输出:

Location        Date
1           Molino November 28
2 Wolf River Bridge December 4

方法2:使用tidyr包的separate函数

如果习惯tidyverse的流程,也可以用separate结合正则分隔符实现:

library(tidyr)
library(dplyr)

locations <- c("Molino November 28.", "Wolf River Bridge December 4.")
df <- data.frame(locations)

df <- df %>%
  separate(locations, into = c("Location", "Date"), 
           sep = "(?=\\b[A-Z][a-z]+ \\d+\\.)",  # 正向预查定位日期开头的分隔点
           remove = FALSE) %>%
  mutate(Date = str_remove(Date, "\\."),  # 移除日期末尾的点
         Location = str_trim(Location)) %>%  # 清理地点的多余空格
  select(Location, Date)

print(df)

原代码的问题

你用str_split_fixed时传入了一个向量作为分隔符,但这个函数要求分隔符是单一字符串,不能和输入长度匹配的向量,因此会报错;另外就算成功拆分,月份会被当作分隔符丢弃,导致日期列缺失月份名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:20:30