假设我在R
中有以下data.framedf <- data.frame(order=(1:10),value=c(1,7,3,5,9,2,9,10,2,3))
除了循环数据之外,测试值是否超过先前的高值我如何获得连续的高值,以便我最终得到这样的表
order value
1 1
2 7
5 9
8 10
TIA
答案 0 :(得分:1)
如果我理解正确的问题,这是一个选项:
df[df$value > cummax(c(-Inf, head(df$value, -1))),]
# order value
#1 1 1
#2 2 7
#5 5 9
#8 8 10
我使用cummax
来跟踪列的最大值&#34;值&#34;并将它(前一行&#39; cummax)与每个&#34;值&#34;进行比较。条目。为了确保第一个条目也被选中,我从&#34; -Inf&#34;。
答案 1 :(得分:0)
“获取连续的高值(值?)” 不清楚。 您似乎只想过滤其值高于之前最大值的行
首先,我们按照递增的价值顺序重新排序你的df ...(不清楚,但我认为这就是你想要的)
然后我们使用diff()>0
的逻辑索引来仅包含严格增加的行:
rdf <- df[order(df$value),]
rdf[ diff(rdf$value)>0, ]
order value
1 1 1
9 9 2
10 10 3
4 4 5
2 2 7
7 7 9
8 8 10