#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)