根据R中bin值的第二向量替换值的向量的有效方法

时间:2018-05-25 00:54:38

标签: r

我有一个数值向量(下面的示例代码中为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)))

1 个答案:

答案 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)]