Используя данные, воспроизводимые в примечании в конце, сформируйте вектор точек среза (т.е. первое число в каждом интервале) и затем используйте findInterval
, чтобы найти интервал, соответствующий весу.
cutpoints <- as.numeric(sub("-.*", "", dfprice$wgt_intvl))
transform(dfmain, price = dfprice$price[findInterval(wgt, cutpoints)])
подача:
Order wgt price
1 01 22 75
2 02 5 50
3 03 35 135
Примечание
dfmain <- data.frame(Order = c("01", "02", "03"), wgt = c(22, 5, 35),
stringsAsFactors = FALSE)
dfprice <- data.frame(wgt_intvl = c("0-15", "15-25", "25-50"),
price = c(50, 75, 135), stringsAsFactors = FALSE)