эффективный способ замены вектора значений согласно второму вектору значений бина в R - PullRequest
0 голосов
/ 25 мая 2018

У меня есть вектор числовых значений (vals.to.convert в примере кода ниже), представляющих высоты (в метрах).Мне нужно заменить каждое значение связанной метрикой, связанной с 1-метровыми ячейками (данные в столбце «становится» в conversion.df data.frame ниже).

Сейчас я использую cut() с conversion.df$becomes в качестве меток, а затем с помощью as.character() и as.numeric() получить преобразование чисел в двоичном формате.

Кто-нибудь может порекомендовать более эффективный и элегантный способ сделать это?

Например, с растром вы можете использовать raster::reclassify и data.frame, структурированный как conversion.df, чтобы сделать замену.

Вот пример кода:

vals.to.convert <- sample(1:80, 500, replace = T)

conversion.df <- data.frame(from = 0:79,
                 to = 1:80,
                 becomes = runif(80))

converted <- as.numeric(as.character(cut(vals.to.convert, 0:nrow(conversion.df), labels = conversion.df$becomes)))

1 Ответ

0 голосов
/ 25 мая 2018

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

converted <- conversion.df$becomes[
                findInterval(vals.to.convert, conversion.df$from) - 1L]

или вырезать

converted <- conversion.df$becomes [cut(vals.to.convert, 0:80)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...