r - 第一行,其中一列中的值高于另一列 R
问题描述
我有一个数据表:
df <- data.table(Points = 1:5, A = c(2,4,6,8,10), B = c(1,3,4,5,9))
df <-
Points A B
1 2 1
2 4 3
3 6 4
4 8 5
5 10 9
我想要与列 B 中高于 A 列当前值的第一个值相对应的列 Points 的值。
如果 A == 4 的预期输出:
4(B中第一个大于4的值对应的Points值等于4)
解决方案
这个怎么样:
df[, Points[apply(outer(A, B, `<`), 1, function(z) which(z)[1])]]
# [1] 2 4 5 5 NA
诀窍是outer
生成一个 5x5 矩阵,其中一行的第TRUE
一个列是索引。我试过which.max
了,但是在这里的第 5 行,没有找到任何东西,所以which.max(rep(F,5))
返回 1,这显然是不对的……而不是which(rep(F,5))[1]
返回NA
(这里更有意义)。
推荐阅读
- amazon-web-services - AWS EBS - 如何将环境名称提取到 .ebextensions 脚本中
- python - 连接字符串时的 Python Pandas 数据帧内存改进
- java - Java net URL 无法正常工作,弄乱了 HTTP
- spring-boot - 来自外部属性文件的弹簧组配置文件
- java - 为什么我的线程突然停止在 Java 中?
- r - 使用 igraph 对象递归遍历邻居
- css - 自定义字体未在 CSS font-face 中加载
- java - 使用 FileOutputStream 创建并写入 .pgm 文件
- azure - Power BI 仪表板仅显示每个数据源的一个(实时流)数据字段选项
- ansible - 稳定 | 如何继承库存中的变量