r - R - 基于下一个最大值的左连接
问题描述
我希望根据它落在哪两个值之间将一个表加入我的数据集。它最好在 dplyr 管道中工作。数据集如下所示:
data <- data.frame(ID = c(01,02,03,04,05,06), result = c(0.33,0,-2.11,3.33,4.44,-7.1))
key <- data.frame(upper_value = c(-4,-1,1,4,10), points = c(0,1,2,3,4))
结果的最小值可以是 10,但是当我正在搜索下一个最大(或相等)值时,关键数据集中没有提到它。
请注意,结果不必是整数。
预期结果如下所示:
expected <- data.frame(ID = c(01,02,03,04,05,06), result = c(0.3333,0,-2.11,3.3333,4.44,-7.1), c(2,2,1,3,4,0))
解决方案
我们可以用findInterval
data$new <- findInterval(data$result, key$upper_value)
-输出
data
# ID result new
#1 1 0.33 2
#2 2 0.00 2
#3 3 -2.11 1
#4 4 3.33 3
#5 5 4.44 4
#6 6 -7.10 0
在此示例中,“点”与索引相同。万一不一样
data$new <- key$points[findInterval(data$result, key$upper_value) + 1]
推荐阅读
- python - 我想实现图像处理,但它显示了一些错误
- node.js - AWS Lambda 函数无法通过 wscat 触发
- docker - 如何在较新版本中使用自定义配置启动 MinIO Server?
- javascript - Outlook.invalid_request:为输入参数“redirect_uri”提供的值无效
- java - 如何计算此代码的时间复杂度?
- google-kubernetes-engine - 在 Wordpress/GKE 安装中删除 Apache 服务器签名
- c# - 不考虑对 Microsoft Graph API 的两次连续调用之间的更改
- python - BeautifulSoup 获取元素之间的文本
- android - xamarin android mvvmcross 闪屏卡住了
- javascript - 获取用户在下载图片时给出的文件名