我正在尝试比较C列中的值并返回与它们关联的行。一个示例是比较C列中的前两个值。如果第一个值大于第二个值,则返回数据框中的前两行。如果第一个值不大,则跳到下一个集合,然后比较并查看C列中的第三个值是否大于第四个值。如果是这种情况,则返回第3行和第4行。如果不跳到下一组。
我一直在与filter
的{{1}}函数争吵,但没有运气。
以下是示例数据框。
dplyr
任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用rollapply
包中的zoo
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
答案 1 :(得分:1)
这是一个基本的R
解决方案,您可以尝试根据条件找到每两行的索引,然后对数据框执行子集:
ind <- which(DF$C[c(T, F)] > DF$C[c(F, T)]) # check whether the odd rows are larger than
# the even rows and find out the index
DF[c(2*ind-1, 2*ind), ] # subset the data frame based on index for every two rows
# A B C
# 1 1.6866933 0.6886403 1.1231086
# 9 0.8781335 2.1689560 1.3686023
# 2 0.8377870 0.5539177 0.4028848
# 10 0.8215811 1.2079620 0.2257710