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

在R语言中拆分同一列内的经纬度坐标数据

问题分析与解决方案

原代码错误原因

  1. parse_number()仅能提取字符串中的第一个数值,因此number列只获取了经度数据,纬度数据直接被丢弃,后续自然无法截取到纬度。
  2. 对数值类型使用str_sub()属于逻辑错误:str_sub是字符串处理函数,即便将数值转为字符串,也不存在纬度部分的数据。

正确解决方案

方案1:使用tidyr::separate分割列(推荐)

这是最直接的方法,利用separate按空格分割Store Location列,自动转换为数值类型:

library(tidyverse)

liquor2 %>%
  separate(`Store Location`, into = c("long", "lat"), sep = " ", convert = TRUE)
  • sep = " ":按空格作为分隔符
  • convert = TRUE:自动将分割后的字符串转为数值类型,NA值会被保留

方案2:正则表达式提取

通过正则分别匹配经度和纬度:

library(tidyverse)

liquor2 %>%
  mutate(
    # 提取开头的经度(含负号、小数)
    long = as.numeric(str_extract(`Store Location`, "^\\s*-?\\d+\\.\\d+")),
    # 提取空格后的纬度
    lat = as.numeric(str_extract(`Store Location`, "(?<=\\s)\\d+\\.\\d+"))
  )

内容的提问来源于stack exchange,提问作者Miguel Angel Acosta Chinchilla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55