我有以下名为df的 Dataframe (下面是dput
):
> df
group value
1 A 5
2 A 1
3 A 1
4 A 5
5 B 8
6 B 2
7 B 2
8 B 3
9 C 10
10 C 1
11 C 1
12 C 8
我想根据组的最高值(max)和第二高值之间的差值来过滤组。差值应小于等于2(〈=2),这意味着应删除组B,因为最高值为8,第二高值为3,差值为5。所需的输出应如下所示:
group value
1 A 5
2 A 1
3 A 1
4 A 5
5 C 10
6 C 1
7 C 1
8 C 8
所以我想知道是否有人知道如何根据最高值和第二高值之间的差异来过滤组?
df的dput
:
df<-structure(list(group = c("A", "A", "A", "A", "B", "B", "B", "B",
"C", "C", "C", "C"), value = c(5, 1, 1, 5, 8, 2, 2, 3, 10, 1,
1, 8)), class = "data.frame", row.names = c(NA, -12L))
3条答案
按热度按时间qacovj5a1#
您可以使用
ave
。如果你可以确定你有所有的时间,至少有两个值,你可以使用。
qlvxas9a2#
使用
dplyr
A碱基R替代物
fhity93d3#
我可能会先创建一个向量与组,以满足您的条件,然后在原始的data.frame过滤器。