我有一个数值向量(下面的示例代码中为vals.to.convert
),表示高程(以米为单位)。我需要将每个值替换为与1米容器关联的相关指标(下面conversion.df
data.frame的'变为'列中的数据。)
现在我使用cut()
并conversion.df$becomes
作为标签,然后强制使用as.character()
和as.numeric()
进行分箱数字转换。
有人可以推荐一种更有效,更优雅的方法吗?
例如,使用栅格,您可以使用raster::reclassify
和类似conversion.df
的data.frame进行替换。
以下是示例代码:
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)))
答案 0 :(得分:3)
你可以使用findInterval
converted <- conversion.df$becomes[
findInterval(vals.to.convert, conversion.df$from) - 1L]
或剪切
converted <- conversion.df$becomes [cut(vals.to.convert, 0:80)]