首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除缺少空间坐标(经度、纬度)的观测

删除缺少空间坐标(经度、纬度)的观测
EN

Stack Overflow用户
提问于 2022-11-24 19:53:21
回答 1查看 24关注 0票数 0

我有一个数据集,有几个缺失的空间坐标。我正在尝试删除那些缺少空间坐标的行。

代码语言:javascript
运行
复制
library(lubridate)
library(amt)

data <- read.csv("gpslocations.csv")

数据集如下所示:

代码语言:javascript
运行
复制
DATE        TIME        LATITUDE     LONGITUDE 
2012-10-14  19:00:00    50.2526641  -123.232616 
2012-10-14  20:01:00    50.2528844  -123.2286441    
2012-10-14  21:00:00    50.2525354  -123.2314822    
2012-10-14  22:00:00    50.2525936  -123.2311984    
2012-10-14  23:01:00    NA          NA
2012-10-15  0:01:00     NA          NA
2012-10-15  1:01:00     NA          NA
2012-10-15  2:01:00     NA          NA


data_clean <- (!is.na('LATITUDE'))

我想移除5-8行,但我似乎无法做到这一点。理想情况下,我还希望使用管道函数来指定日期和时间格式,然后在正确的坐标系中指定项目。我希望您能提供正确的代码帮助。谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-11-24 19:58:41

如果if_all在这里有帮助的话。你的问题是他们是0,而不是NA。此外,您的代码只检查字符串'LATITUDE'是否为na。它没有过滤数据集。

代码语言:javascript
运行
复制
library(tidyverse)

data |>
  filter(if_all(c(LATITUDE, LONGITUDE), \(x) x != 0))
#> # A tibble: 4 x 4
#>   DATE       TIME   LATITUDE LONGITUDE
#>   <date>     <time>    <dbl>     <dbl>
#> 1 2012-10-14 19:00      50.3     -123.
#> 2 2012-10-14 20:01      50.3     -123.
#> 3 2012-10-14 21:00      50.3     -123.
#> 4 2012-10-14 22:00      50.3     -123.

或者另一个选择,如果你想留在基地:

代码语言:javascript
运行
复制
data[apply(data[,c("LATITUDE", "LONGITUDE")] != 0, 1, any),]
#> # A tibble: 4 x 4
#>   DATE       TIME   LATITUDE LONGITUDE
#>   <date>     <time>    <dbl>     <dbl>
#> 1 2012-10-14 19:00      50.3     -123.
#> 2 2012-10-14 20:01      50.3     -123.
#> 3 2012-10-14 21:00      50.3     -123.
#> 4 2012-10-14 22:00      50.3     -123.

编辑

如果它们是NA而不是0,则一切都应该是相同的,如果您只是更改为!is.na:

代码语言:javascript
运行
复制
library(tidyverse)

data[apply(!is.na(data[,c("LATITUDE", "LONGITUDE")]) , 1, any),]
#> # A tibble: 4 x 4
#>   DATE       TIME   LATITUDE LONGITUDE
#>   <date>     <time>    <dbl>     <dbl>
#> 1 2012-10-14 19:00      50.3     -123.
#> 2 2012-10-14 20:01      50.3     -123.
#> 3 2012-10-14 21:00      50.3     -123.
#> 4 2012-10-14 22:00      50.3     -123.

data |>
  filter(if_all(c(LATITUDE, LONGITUDE), \(x) !is.na(x)))
#> # A tibble: 4 x 4
#>   DATE       TIME   LATITUDE LONGITUDE
#>   <date>     <time>    <dbl>     <dbl>
#> 1 2012-10-14 19:00      50.3     -123.
#> 2 2012-10-14 20:01      50.3     -123.
#> 3 2012-10-14 21:00      50.3     -123.
#> 4 2012-10-14 22:00      50.3     -123.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74565674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档