dply根据每组的两个标准排列()

  • 本文关键字:两个 标准 排列 dply r
  • 更新时间 :
  • 英文 :


在采样事件之前,我收集了数百个农场的每小时天气,为期五周。我想确定采样事件前三周的平均Air_Temp。目前,我的数据出现故障。我想按每个服务器场(在文件中表示)进行分组,然后按日期和时间升序排列所有数据。换句话说,我希望每个文件都井井有条。 下面是我的数据示例(名为"天气"的数据帧):

File Status Hour Air_Temp Dew_Temp Pressure Wind_Dir
1 results_1_farm-19      1   21     24.1     16.5       NA      190
2 results_1_farm-19      1   22     23.0     16.8       NA        0
3 results_1_farm-19      1   23     19.8     16.4       NA        0
4 results_1_farm-19      1    0     17.4     15.8       NA        0
5 results_1_farm-19      1    1     19.0     17.2       NA      170
Wind_Speed Sky Rain_1 Rain_6       Date
1        2.1   7     NA     NA 2013-01-14
2        0.0   4     NA     NA 2013-01-14
3        0.0   0     NA     NA 2013-01-14
4        0.0   0     NA     NA 2013-01-15
5        1.5   0     NA     NA 2013-01-15

看起来它是有序的,但是当您滚动浏览时,您会看到日期不按顺序排列。

因此,我尝试使用 dplyr 告诉 R 按日期和时间排列数据:

Weather1<-Weather%>%
group_by(File)%>%
arrange(Date, Hour)

但是,安排似乎忽略了group_by功能。在某些情况下,我有两个具有相同小时和日期的服务器场的数据。它没有将每个服务器场按顺序排列,而是将 df 按日期和时间顺序排列。

我误解了group_by会做什么吗?感谢您的任何帮助。

group_by不应该是必需的,它通常用于您希望对数据执行某种聚合的情况。排列将首先按文件排序,然后按每个文件中的日期排序,然后按每个日期内的小时排序。这应该会让你找到你正在寻找的结构。

Weather1 <- Weather%>%
arrange(File, Date, Hour)

我使用的是dplyr的"0.5.0.9001"版本(0.6.0的预发布版本)。新版本将很快发布。

对于分组的 DF,默认情况下,arrange将忽略分组信息:

## S3 method for class 'grouped_df'
arrange(.data, ..., .by_group = FALSE)

因此,您必须手动设置.by_group = TRUE才能告诉arrangedf已分组:

Weather1 <- Weather %>%
group_by(File) %>%
arrange(Date, Hour, .by_group = TRUE)

除了我的评论,您还可以执行以下操作:

sorted <- Weather %>% 
arrange(Date, Hour) %>%
group_by(File)

最新更新