2016-03-20 5 views
1

У меня небольшая проблема, которую я не могу решить самостоятельно.Настройка категориальной переменной на основе данных с привязкой

У меня есть кадр данных, содержащий некоторую информацию об окружающей среде, а также широту и долготу для каждой выборки станций. Я хочу разделить свою область исследования на 4 небольшие области (см. Изображение ниже), чью информацию я хочу включить в новый столбец в свой кадр данных о дырах. То есть, мой новый столбец должен быть фактором с 4 уровнями, каждый из которых соответствует определенным диапазонам геолокации на основе ограничений каждой области.

enter image description here

В качестве примера, позвольте сказать, что моя зона 1 определяются как все типовые станции, расположенные между меридианами (-10.4 to -10.6) и широтами (-37 to -36.2.). Таким образом, в конце я хочу иметь такой фрейм данных как:

Variable 1 Variable 2 Latitude Longitude Area 
0.98   1.5   -10.2  -37.5  1 
0.74   0.9   -10.1  -37.5  1 
0.58   0.7   -11.7  -36.8  3 
0.94   1.2   -11.9  -37.5  4 

и так далее. Может ли кто-нибудь помочь мне решить мою проблему?

+2

Кажется, что ваши районы определяются исключительно широтами, поэтому используйте 'cut' с' Latitude' должно быть достаточно –

ответ

0

Если интервалы определены исключительно Latitude, вы можете использовать следующее.

> Var1 <- runif(100) 
> Var2 <- runif(100) 
> Latitude <- runif(100, -13.0, -10.0) 
> Longitude <- runif(100, -38.0, -36.0) 
> 
> dat <- data.frame(Var1, Var2, Latitude, Longitude) 
> 
> Area <- as.numeric(cut(dat$Latitude, breaks = c(-13.0, -12.0, -11.0, -10.0))) 
> 
> dat <- data.frame(dat, Area) 
> dat 
      Var1  Var2 Latitude Longitude Area 
1 0.655301728 0.14144585 -10.48851 -37.96152 3 
2 0.107591891 0.72131348 -11.75188 -36.05489 2 
3 0.639967329 0.98282855 -10.76784 -36.01176 3 
4 0.295014765 0.31968068 -11.99204 -37.48354 2 
5 0.373011497 0.21168608 -11.62501 -36.37215 2 
6 0.802966559 0.69812115 -11.56078 -37.09359 2 
7 0.013607591 0.47285961 -10.95633 -36.06122 3 
8 0.309604142 0.14035926 -10.94194 -37.61688 3 
9 0.066620024 0.15386860 -12.26123 -36.84730 1 
10 0.066227174 0.70843535 -12.06751 -36.44342 1 
11 0.551767865 0.60483061 -12.78234 -36.23624 1 
12 0.770809846 0.80973319 -10.47946 -37.97104 3 
13 0.909879222 0.04641956 -11.18606 -36.91503 2 

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

Area <- as.numeric(cut(dat$Latitude, breaks = 4)) 

иметь 4 интервалов.

+0

Хорошо, спасибо вам большое за помощь! Он решил мои проблемы. M. –