You need to enable JavaScript to run this app. R如何将dataframe内空格分隔的经纬度对高效拆分为独立行列
优惠活动
大模型
产品
解决方案
定价
更多

R如何将dataframe内空格分隔的经纬度对高效拆分为独立行列

问题背景

我有如下data.frame结构数据:

b<-structure(list(b = c("47.83006,11.71699 47.83004,11.71691 47.83002,11.7168 47.83001,11.71662", 
"47.83001,11.71662 47.82993,11.71628 47.82991,11.7162 47.82988,11.71614 47.82983,11.71609 47.8295,11.71588 47.82919,11.71566 47.82898,11.71549 47.82845,11.71504 47.82832,11.715 47.82821,11.715 47.82712,11.71531 47.82639,11.71549 47.82606,11.71561 47.8257,11.71567 47.82548,11.71574 47.82433,11.71613", 
"47.82433,11.71613 47.82436,11.7165 47.8244,11.71715 47.82442,11.71742 47.82453,11.71823 47.82459,11.71856 47.82492,11.7199", 
"47.82492,11.7199 47.82495,11.72005 47.82503,11.72034 47.82515,11.72066 47.82526,11.72093 47.82556,11.72172 47.82559,11.72182 47.82561,11.72191 47.82562,11.72201", 
"47.85051,12.11965 47.85092,12.11997", "48.10034,11.75948 48.10021,11.75938"
)), row.names = c(NA, 6L), class = "data.frame")

数据预览

该数据每一行存储多个经纬度(lat,lon)坐标对,坐标对之间用空格分隔,单个坐标对的纬度和经度用逗号连接。需要尽可能高效地将其转换为纬度、经度分列存储的data.frame或data.table,目标格式如下:

Lat       lon
47.83006  11.71699
47.83004  11.71691
47.83002  11.7168
…

解决方案

方案1:基础R高性能实现(推荐)

无需加载第三方依赖,运行速度最快,代码如下:

d <- read.csv(text = unlist(strsplit(b$b, " ", TRUE)), col.names = c("Lat", "Lon"))

性能测试显示该方案平均耗时约1.12毫秒,比tidyverse方案快12倍左右,适合处理大规模坐标数据集。

方案2:tidyverse易读实现

语法可读性强,适合需要后续链式处理数据的场景,代码如下:

library(tidyr)
library(dplyr)
res <- b %>% 
  separate_rows(b, sep = " ") %>% 
  separate(b, into = c("Lat", "Lon"), sep = ",", convert = TRUE) %>% 
  data.frame()

性能对比结果

Unit: milliseconds
                                                                                                                         expr
 c <- b %>% separate_rows(b, sep = " ") %>% separate(b, into = c("Lat",      "Lon"), sep = ",", convert = T) %>% data.frame()
                                     d <- read.csv(text = unlist(strsplit(b$b, " ", TRUE)), col.names = c("Lat",      "Lon"))
       min        lq      mean    median        uq       max neval
 12.363628 13.031700 14.027860 13.408883 13.703157 28.922909   100
  1.020622  1.050315  1.119533  1.117269  1.170826  1.348833   100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 01:54:02