我有许多试验,其中一个变量增加到最大值,然后减少回到起点。如何保持观察值的增加值达到最大值。感谢。
例如
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
...
最终我会有一个低截止值,也可能是我所说的最大值,但基本上就是上述目标。
答案 0 :(得分:3)
可能不是最有效的解决方案,但这是尝试使用data.table
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]
答案 1 :(得分:-1)
library(dplyr)
df%>%group_by(Trial)%>%slice(1:max(C))