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

dplyr-根据每组的两个标准排列(),r,R,在采样活动之前的五周内,我每小时收集了数百个农场的天气数据。我想确定采样事件前三周的平均气温。目前,我的数据有问题。我想按文件中表示的每个农场进行分组,然后按日期和小时按升序排列所有数据。换句话说,我希望每个文件都井然有序。下面是一个数据帧示例,称为天气: File Status Hour Air_Temp Dew_Temp Pressure Wind_Dir 1 results_1_farm-19 1 21 24.1 16.5

在采样活动之前的五周内,我每小时收集了数百个农场的天气数据。我想确定采样事件前三周的平均气温。目前,我的数据有问题。我想按文件中表示的每个农场进行分组,然后按日期和小时按升序排列所有数据。换句话说,我希望每个文件都井然有序。下面是一个数据帧示例,称为天气:

              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)
然而,arrange似乎忽略了group_的功能。在某些情况下,我有两个时间和日期相同的农场的数据。它没有将每个农场按顺序排列,而是将df按日期和时间排列


我是不是误解了你的团队会做什么?谢谢你的帮助

我正在使用0.6.0的dplyr预发行版的“0.5.0.9001”版本。新版本将很快发布

对于分组df,默认情况下排列将忽略分组信息:

## S3 method for class 'grouped_df'
arrange(.data, ..., .by_group = FALSE)
因此,您必须手动设置.by_group=TRUE,以便告知arrange df已分组:

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

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

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

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

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

你有没有试过删除groupby,只做arrangeFile,Date,Hourarrange,我想从0.5.0开始不再尊重dplyr中的groupby。是否为您安排文件、日期、小时工作?您可以添加.by_group=TRUE,默认为false。您是否尝试使用data.table?天气[chgroupWeather$File,]?安排文件、日期、小时结束工作。谢谢大家!!谢谢,这似乎解决了问题: