Как выбрать область / полигон (широта, длина) внутри фрейма данных R

#r #dataframe #select #subset #multiple-conditions

#r #фрейм данных #выберите #подмножество #несколько условий

Вопрос:

У меня есть один фрейм данных с более чем 900000 местоположениями (широта и долгота) с глубинами погружения, и я хочу 2 вещи, пожалуйста.

 #I wrote this example above to who gonna help can try at your R program.

df = data.table(dive = c(10, 15, 20, 50, 70, 80, 90, 40, 100, 40, 40, 
                         50, 67, 45, 70, 30),
                lat = c(-23, -24, -25, -26, -27, -28, -29, -30, -32, 
                        -33, -34, -35, -36, -37, -38, -39),
                lon = c(-44, -43, -42, -41, -40, -39, -38, -35, -30, 
                        -28, -25, -23, -20, -19, -18, -15))

#the class of all of this is numeric
 

-Первый

Чтобы вы могли лучше понять, у меня есть эта карта, круги — это глубина погружения в заданном месте:

введите описание изображения здесь

У меня есть глубины погружения, и я хочу выбрать одну конкретную область (широта = -36, широта = -27, долгота = -27 и долгота = -40).

И я хочу выбрать глубину погружения внутри этой области синим цветом во фрейме данных:

введите описание изображения здесь

— Второй

Теперь мне нужно выбрать обратную область зеленым цветом:

введите описание изображения здесь:

ЧТО Я ПРОБОВАЛ

Я попытался сделать это, чтобы выбрать «синюю» область:

 df2<-df[df$lat <= -36 amp; df$lat >= -27 amp; df$lon >= -27 amp; df$lon <= -40]
#this return the data frame with no variables and with all locations
 

#And I tried inserting a comma at the end

df2<-df[df$lat <= -36 amp; df$lat >= -27 amp; df$lon >= -27 amp; df$lon <= -40,]
#this return the data frame with no observations 

 

Кто-нибудь знает, как это сделать?
Спасибо!

Комментарии:

1. У вас есть отрицательные числа, когда вы меняете > на < и > , чтобы < это работало: df[df$lat >= -36 amp; df$lat <= -27 amp; df$lon <= -27 amp; df$lon >= -40,] и df[!(df$lat >= -36 amp; df$lat <= -27 amp; df$lon <= -27 amp; df$lon >= -40),]

Ответ №1:

Вы можете использовать :

 blue_area <- subset(df, lat >= -36 amp; lat <= -27 amp; lon <= -27 amp; lon >= -40)
green_area <- dplyr::anti_join(df, blue_area)