2017-02-17 18 views
1

Я прочитал в csv файле о погоде по дням. Одна из переменных называется winddirection (windrichting), но она дается в градусах, а 0 и 990 имеют особое значение.Изменить градусы ветра на символ в R

Я хочу изменить цифры на север/юг/запад/восток, но когда я использовал функцию замены, он изменил тип данных всего вектора на символ, который не позволил моей следующей заменять диапазон работы. Итак, теперь я закончил с заявлением if/else if/else, но я не могу заставить его работать. Также я получаю условие ошибки имеет длину> 1. Может ли кто-нибудь помочь мне заставить это работать, поэтому у меня есть диапазоны 45-135 к востоку, 135-225 юга и т. Д.

вот мой код, где mydata$DD является переменной для направления ветра с более чем 2000 значениями.

windrichting <- mydata$DD 
windrichting <- if (windrichting == 990){ 
    windrichting == "Veranderlijk" 
} else if (windrichting>45 && windrichting<=135){ 
    windrichting == "Oost" 
} else if (windrichting>135 && windrichting<=225){ 
    windrichting == "Zuid" 
} else if (windrichting>225 && windrichting <=315){ 
    windrichting == "West" 
} else if (windrichting ==0){ 
    windrichting == "Windstil" 
} else windrichting == "Noord" 
+0

См '? Cut' и -eg- [это] (http://stackoverflow.com/questions/8233846/cut-function-in-r-exclusive-or-am-i-double-counting) –

+0

смотрите функцию 'ifelse'. 'А <-1: 10; IfElse (а <2, "а", IfElse (а> = 2 & а <5, "б", "в")) '. Когда вы выполняете 'if (windrichting> 45)', вы сравниваете вектор с числом. Это является причиной ошибки – DJJ

ответ

0

Вы можете сделать это, используя функцию *apply.

windrichting_text <- unlist(lapply(windrichting, function (x) { 
    if (x == 990) { 
     return("Veranderlijk") 
    } else if { 
     .... 
    } else { 
     return ("Noord") 
    }) 

Применяется функция, определенная для всех элементов в списке.

1

Возможно, что-то похожее на это?

tmp <- round((windrichting + 45)/90) %% 8 
tmp[windrichting == 990] <- 8 
tmp <- factor(tmp, levels = 0:9, labels = c("Noord", "Oost", "Zuid", "West", "Veranderlijk", "Windstil")) 
tmp[windrichting == 0] <- "Windstil" 
windrichting <- tmp 
+0

, когда я пытаюсь выполнить код. Я получаю сообщение об ошибке: Ошибка в коэффициенте (tmp, levels = 0: 7, labels = c ("Noord", "Oost", "Zuid",: недействительный 'label', длина 4 должна быть 1 или 8 при изменении 0: 7 до 0: 3 i получить ошибку: В '[<-. factor' (' * tmp * ', windrichting == 0, value = "Windstil"): Недопустимый уровень фактора, генерируемый NA – NickW

 Смежные вопросы

  • Нет связанных вопросов^_^