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

如何在RStudio中将经纬度W/E转换为正负值并清理格式

在RStudio中处理经度数据:移除W/E标识并转换W为负数

你的数据集里经度列是包含前缀、数值和方向标识的字符串,需要清理并转换为标准数值格式,下面提供两种可行的处理方案:

方法一:使用tidyverse工具链(推荐,代码更直观)

先确保安装并加载tidyverse包(未安装的话先运行install.packages("tidyverse")):

library(tidyverse)

# 假设你的数据框名为df
df <- df %>%
  mutate(
    # 清理经度列的前缀和多余空格,提取核心内容
    longitude_clean = str_remove(longitude, "^\\s*deg_longitude: "),
    # 分离数值部分和方向标识
    longitude_value = as.numeric(str_extract(longitude_clean, "\\d+\\.?\\d*")),
    longitude_dir = str_extract(longitude_clean, "[WE]"),
    # 转换数值:西经(W)取负,东经(E)或无标识(如0值)保持原数
    longitude_processed = case_when(
      longitude_dir == "W" ~ -longitude_value,
      TRUE ~ longitude_value
    )
  ) %>%
  # 可选:删除中间临时列,只保留需要的结果列
  select(-longitude_clean, -longitude_value, -longitude_dir)

方法二:使用Base R(无需额外安装包)

如果不想加载外部包,用基础R函数也能实现:

# 假设数据框名为df
# 第一步:清理前缀,提取核心内容
longitude_core <- sub("^\\s*deg_longitude: ", "", df$longitude)

# 第二步:提取纯数值和判断是否为西经
longitude_value <- as.numeric(gsub("[WE]", "", longitude_core))
is_west <- grepl("W", longitude_core)

# 第三步:转换西经数值为负数
df$longitude_processed <- ifelse(is_west, -longitude_value, longitude_value)

结果验证

处理完成后,可以用tail(df$longitude_processed)查看末尾的有效记录:原数据中带W的经度会转为负数,E和0值保持正数,且所有方向标识已被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:25:26