r - 从列值比较中确定 R 数据框行值

我正在尝试比较 C 列中的值并返回与它们关联的行。一个示例是比较 C 列中的前两个值。如果第一个值大于第二个值,则返回数据框中的前两行。如果第一个值不大于,则跳到下一组,比较 C 列中的第三个值是否大于第四个。如果是这种情况,则返回第 3 行和第 4 行。如果不是,则跳到下一组。

我一直在与 dplyrfilter 函数争论不休,但没有成功。

下面是一个示例数据框。

set.seed(99)
DF <- data.frame(abs(rnorm(10)), abs(rnorm(10)), abs(rnorm(10)))
colnames(DF) <-c("A", "B", "C")
DF

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用 zoo 包中的 rollapply

library(zoo)
ind <- rep(rollapply(DF$C, 2, by = 2, which.max) == 1, each = 2)
DF[ind,]
            A         B          C
#1  1.52984334 2.0127251 1.70922539
#2  1.96454540 0.2887642 0.52301701
#5  1.15765833 0.2866493 1.72702076
#6  0.80379719 1.0945894 0.72269558
#7  1.52239099 0.5296913 2.04080511
#8  0.01663749 0.3593682 0.88601771
#9  0.12672258 0.4110257 0.19165526
#10 0.27740770 0.1950477 0.01378397

https://stackoverflow.com/questions/38283048/

相关文章:

c - 我无法理解打印第一个八个数组元素的数组的输出

java - Java 中的静态方法调用是如何工作的?

java - 在NIFI中创建自定义 Controller 服务时无法生成扩展的文档

java - 如何将充满 if 语句的 for 循环更改为更优雅/高效的代码?

intellij-idea - IdeaVim:如何在不使用箭头键的情况下循环浏览列表项?

electron - 如何将在 Electron 上开发的桌面应用程序打包成.exe?

java - 为什么 Double::compareTo 可以作为 Stream.max(Compa

java - 这个While 循环可以简化吗?

prolog - Prolog数据库的Web访问

java - 检查字符串中是否存在模式