我有一个数据集,有几个缺失的空间坐标。我正在尝试删除那些缺少空间坐标的行。
library(lubridate)
library(amt)
data <- read.csv("gpslocations.csv")
数据集如下所示:
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行,但我似乎无法做到这一点。理想情况下,我还希望使用管道函数来指定日期和时间格式,然后在正确的坐标系中指定项目。我希望您能提供正确的代码帮助。谢谢
发布于 2022-11-24 19:58:41
如果if_all
在这里有帮助的话。你的问题是他们是0,而不是NA。此外,您的代码只检查字符串'LATITUDE'
是否为na。它没有过滤数据集。
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.
或者另一个选择,如果你想留在基地:
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:
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.
https://stackoverflow.com/questions/74565674
复制相似问题