在下面的 Dataframe 中,我想通过"id"和最高变量"op"来确定每年的两个观测值。然后聚合变量op、tr、cp的两个最高观测值。我希望得到dplyr的答案。我的原始 Dataframe 有成千上万个观测值,所以如果我想按年选择1000个最高"op"观测值,我需要一些可以调整的东西。
数据:
year id op tr cp
1 1984 1 10 10 10
2 1985 1 20 20 20
3 1986 1 30 30 30
4 1987 1 40 40 40
5 1988 1 50 50 50
6 1985 2 15 15 15
7 1986 2 17 17 17
8 1987 2 18 18 18
9 1988 2 19 19 19
10 1985 3 20 20 20
11 1986 3 22 22 22
12 1986 4 10 10 10
13 1987 4 20 20 20
14 1988 4 40 40 40
预期产出:
year2 op2 tr2 cp2
1 1984 10 10 10
2 1985 40 40 40
3 1986 52 52 52
4 1987 60 60 60
5 1988 90 90 90
所以在1984年,高位停止按id = 1,第二个是id = 1和3,1986年是id = 1和3,1987年是id = 1和4,1988年是id = 1和4。
我想避免使用函数,但不确定是否可能。一个运行良好的函数应该是can。
4条答案
按热度按时间2admgd591#
数据
编号
输出
46scxncf2#
使用
data.table
f3temu5u3#
您可以按降序排列
group_by
和reframe
/summarise
across
列和sort
值,并选择两个最大值,如下所示(请注意:使用na.rm = TRUE
,因为第一个组只有1个值,因此选择两个值时,其中一个值为NA):创建于2023年1月14日,使用reprex v2.0.2
reframe
和summarise
之间的一个区别是reframe返回未分组的 Dataframe 。也可以像这样使用
summarise
:kr98yfug4#
请尝试以下代码