R:将值增加到最大值的子集,不包括减少的
我做了很多试验,其中一个变量增加到最大感兴趣值,然后减少到一个起点。我该如何保持观察值的最大值。谢谢 比如说R:将值增加到最大值的子集,不包括减少的,r,subset,R,Subset,我做了很多试验,其中一个变量增加到最大感兴趣值,然后减少到一个起点。我该如何保持观察值的最大值。谢谢 比如说 Trial A B C 1 2 4 1 1 4 3 2 1 3 7 3 1 3 3 2 1 4 1 1 2 4 1 1 2 6 2 2 2 3 1 3 2 1 1 2 2 7 3 1 ... 因此,我们将检查C上的最大值,并保留如下所示 Trial A B C 1 2 4 1 1 4
Trial A B C
1 2 4 1
1 4 3 2
1 3 7 3
1 3 3 2
1 4 1 1
2 4 1 1
2 6 2 2
2 3 1 3
2 1 1 2
2 7 3 1
...
因此,我们将检查C上的最大值,并保留如下所示
Trial A B C
1 2 4 1
1 4 3 2
1 3 7 3
2 4 1 1
2 6 2 2
2 3 1 3
...
最终,我会有一个较低的截止值,并且可能会改变我所说的最大值,但本质上,以上是目标。可能不是最有效的解决方案,但这里是使用
数据的一个尝试。表
library(data.table)
setDT(df)[, .SD[1:which.max(C)], by = Trial]
# Trial A B C
# 1: 1 2 4 1
# 2: 1 4 3 2
# 3: 1 3 7 3
# 4: 2 4 1 1
# 5: 2 6 2 2
# 6: 2 3 1 3
还是为了提高效率
indx <- setDT(df)[, .I[1:which.max(C)], by = Trial]
df[indx$V1]
indx您可以从一个可复制的示例和所需的输出插图开始。是的,我应该有……但我认为这可能是其中一个非常简单的示例。我会考虑编辑。试试df[c(TRUE,diff(df$c)>=0),]
@DavidArenburg,是的,我想你是对的。@如果第二组的第一次事件比第一组的最后一次事件小,那么从一开始就不起作用了。@nicola我想这是行不通的。我不确定这在真实数据中是否可能,尽管这在您的数据集上工作得很好,除非您能使示例更具可复制性,否则我帮不了您。我的错误…我实际上键入了**SD[1:which.max(df$C)…”。有效。谢谢。
library(dplyr)
df%>%group_by(Trial)%>%slice(1:max(C))