【问题标题】:Converting longitude entries from East and West to positive and negative将经度条目从东和西转换为正负
【发布时间】:2023-01-17 21:51:43
【问题描述】:

我目前有一个数据集列为

Latitude     Longitude
lat:51.40    long:2.19W
lat:50.52    long:1.09E
lat:57.54    long:3.06W

如何删除 W 和 E 并在 Rstudio 中使 W 读数为负数?

按照下面的评论建议运行 dput(head(df)) 之后(数据集中的前几个条目是错误的,因此 lat 和 long 值被记录为 0)。

结构(列表(deg_latitude = c(“deg_latitude:0”,“deg_latitude:0”, " deg_latitude: 0", " deg_latitude: 0", " deg_latitude: 0", " deg_latitude: 0"), deg_longitude = c(" deg_longitude: 0.0", " deg_longitude: 0.0", " deg_longitude: 0.0", " deg_longitude: 0.0", " deg_longitude: 0.0", " deg_longitude: 0.0")), row.names = c(NA, 6L), class= "数据.帧")

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。
  • 你好爱丽丝,欢迎来到堆栈溢出。你试过什么了?有一个可重现的例子也很有用 - 如果你可以运行dput(head(df))(如果你的数据框是 df)然后将结果发布到你的原始问题(而不是评论)那么人们将能够与你一起解决问题.
  • 你好@PaulStaffordAllen!感谢您的评论。这样可以吗?
  • 通常,带有实际信息的前几行会更有用,但请先看看 Tom 下面的回答是否能解决问题。

标签: r coordinates latitude-longitude


【解决方案1】:

删除所有不是数字和标点符号的字符,如果检测到“W”(str_detect()),则将值转为负数

library(tidyverse) 

df %>%
  mutate(across(
    everything(),
    ~ case_when(
      str_detect(., "W") ~ as.numeric(str_remove_all(., "[^0-9\.]")) * -1,
      TRUE ~ as.numeric(str_remove_all(., "[^0-9\.]"))
    )
  ))

# A tibble: 3 × 2
  Latitude Longitude
     <dbl>     <dbl>
1     51.4     -2.19
2     50.5      1.09
3     57.5     -3.06

【讨论】:

    【解决方案2】:

    data.table解决方案

    library(data.table)
    library(readr)
    DT <- fread("Latitude     Longitude
    lat:51.40    long:2.19W
    lat:50.52    long:1.09E
    lat:57.54    long:3.06W")
    
    DT[, c("deg_lat", "deg_lon") := lapply(.SD, readr::parse_number)]
    DT[grepl(".*W$", Longitude), deg_lon := -1 * deg_lon]
    
        Latitude  Longitude deg_lat deg_lon
    1: lat:51.40 long:2.19W   51.40   -2.19
    2: lat:50.52 long:1.09E   50.52    1.09
    3: lat:57.54 long:3.06W   57.54   -3.06
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 2012-12-30
      • 1970-01-01
      • 2013-04-04
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多