我在采样活动前的五个星期内收集了数百个农场的每小时天气。我想确定采样事件前三周的平均Air_Temp。目前,我的数据无序。我希望按每个服务器场分组(在文件中表示),然后按日期和小时按升序排列所有数据。换句话说,我希望每个文件都按顺序排列。以下是我的数据示例(名为Weather的数据框):
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会做什么?感谢您的任何帮助。
答案 0 :(得分:1)
我正在使用dplyr
的'0.5.0.9001'版本(预发布版本为0.6.0)。新版本即将发布。
对于分组df,arrange
默认会忽略分组信息:
## 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)
答案 1 :(得分:0)
group_by对此不是必需的,它通常用于您希望对数据执行某种聚合时。排列将首先按文件排序,然后按每个文件中的日期排序,然后按每个日期内的小时排序。这应该可以为您提供所需的结构。
Weather1 <- Weather%>%
arrange(File, Date, Hour)
答案 2 :(得分:0)
除了我的评论,您还可以执行以下操作:
sorted <- Weather %>%
arrange(Date, Hour) %>%
group_by(File)