可以在dplyr中汇总而不是删除数据框中的其他列吗?

use*_*887 5 r

我有一个包含三列的数据框,我正在尝试一个简单的摘要来查找数据框中每个城市的最高温度,同时还保留每个最高温度的日期.

这是数据框:

我们称之为maxT

  new.ID       Date   Max_TemperatureF
1     TUS 1960-04-05               87
2     TUS 1984-04-24               86
3     TUS 1972-04-01               75
4     TUS 2006-04-14               91
5     TUS 2000-05-03               96
6     PHX 1960-04-05               93
7     PHX 1984-04-24               93
8     PHX 1972-04-01               84
9     PHX 2006-04-14               91
10    PHX 2000-05-03               99
11    LAS 1960-04-05               91
12    LAS 1984-04-24               86
13    LAS 1972-04-01               81
14    LAS 2006-04-14               81
15    LAS 2000-05-03               98
16    LAX 1960-04-05               72
17    LAX 1984-04-24               69
18    LAX 1972-04-01               73
19    LAX 2006-04-14               63
20    LAX 2000-05-03               69
21    SAC 1960-04-05               82
22    SAC 1984-04-24               75
23    SAC 1972-04-01               64
24    SAC 2006-04-14               71
25    SAC 2000-05-03               81
26    PSP 1960-04-05               98
27    PSP 1984-04-24               91
28    PSP 1972-04-01               91
29    PSP 2006-04-14               81
30    PSP 2000-05-03               9
Run Code Online (Sandbox Code Playgroud)

每个城市都列出了5个温度,我想找到每个城市的最大值,然后列出日期.我正在使用dplyr,并尝试了这个代码的相当多的变体,但Date总是在最终产品中被删除.有没有办法添加像drop = FALSE或类似的条件?

maxT <- tbl_df(maxT) %>%
  select(new.ID,Date,Max_TemperatureF)%>%
  group_by(new.ID) %>% 
  summarise(max_temp= max(Max_TemperatureF))
Run Code Online (Sandbox Code Playgroud)

这是我不断得到的输出:

 new.ID max_temp
1    LAS       98
2    LAX       73
3    PHX       99
4    PSP       99
5    SAC       82
6    TUS       96
Run Code Online (Sandbox Code Playgroud)

谢谢.

akr*_*run 4

我们可以尝试filterslice。如果最大“Max_TemperatureF”存在关联并且想要获取所有这些行,

 tbl_df(test) %>%
      group_by(new.ID) %>% 
      filter(Max_TemperatureF==max(Max_TemperatureF))
Run Code Online (Sandbox Code Playgroud)

或者我们可以获取行的索引which.max和子集slice

 tbl_df(test) %>% 
       group_by(new.ID) %>% 
       slice(which.max(Max_TemperatureF))
Run Code Online (Sandbox Code Playgroud)