I have latitude and longitude data such as...
lat=runif(1000, min = 22.1, max = 22.8)
lon=runif(1000, min = 120, max = 120.6)
latlon=cbind(lat,lon)
and I want to classify them into different zones based on this...
Zone=c("A","B","C","C","C","D","E","E","E")
North=c(23,23,22.83,22.67,22.42,22.33,22.33,22.42,22.50)
South=c(22.67,22.67,22.67,22.33,22.33,22.08,22.08,22.33,22.42)
East=c(120,120.2,120.2,120.3,120.4,120.5,120.7,120.6,120.5)
West=c(119.7,120,120.2,120,120.3,120.2,120.5,120.4,120.3)
data.frame(cbind(Zone,North,South,East,West))
I want to separate my gis data latlon
into 5 different zone (A,B,C,D,E)
and I tried to use ifelse
before, but it seems to be not very efficiently
Anyway I can finish it more quickly?
===================== I write a new code based on Adrian Martin's suggestion
newzone=case_when(lat >= zzz$South[1] & lat <= zzz$North[1] & lon <= zzz$East[1] & lon >= zzz$West[1]~ zzz$Zone[1],
lat >= zzz$South[2] & lat <= zzz$North[2] & lon <= zzz$East[2] & lon >= zzz$West[2]~ zzz$Zone[2],
lat >= zzz$South[3] & lat <= zzz$North[3] & lon <= zzz$East[3] & lon >= zzz$West[3]~ zzz$Zone[3],
lat >= zzz$South[4] & lat <= zzz$North[4] & lon <= zzz$East[4] & lon >= zzz$West[4]~ zzz$Zone[4],
lat >= zzz$South[5] & lat <= zzz$North[5] & lon <= zzz$East[5] & lon >= zzz$West[5]~ zzz$Zone[5],
lat >= zzz$South[6] & lat <= zzz$North[6] & lon <= zzz$East[6] & lon >= zzz$West[6]~ zzz$Zone[6],
lat >= zzz$South[7] & lat <= zzz$North[7] & lon <= zzz$East[7] & lon >= zzz$West[7]~ zzz$Zone[7],
lat >= zzz$South[8] & lat <= zzz$North[8] & lon <= zzz$East[8] & lon >= zzz$West[8]~ zzz$Zone[8],
lat >= zzz$South[9] & lat <= zzz$North[9] & lon <= zzz$East[9] & lon >= zzz$West[9]~ zzz$Zone[9])
Is there anyway I can make the code more simpe? Thanks