【问题标题】:dplyr - arrange () according to two criteria per groupdplyr - 根据每组的两个标准排列 ()
【发布时间】:2017-05-18 14:44:39
【问题描述】:

在采样活动之前的五周内,我每小时收集数百个农场的天气信息。我想确定采样事件前三周的平均 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)

但是,arrange 似乎忽略了 group_by 函数。在某些情况下,我有两个具有相同小时和日期的农场的数据。它没有按顺序排列每个农场,而是按日期和小时的顺序排列 df。

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

【问题讨论】:

  • 您是否尝试过删除 group_by 并仅执行 arrange(File, Date, Hour)
  • arrange 不再尊重 dplyr 中的group_by(我认为是从 0.5.0 开始)。 arrange(File, Date, Hour) 会为你工作吗?
  • 可以加.by_group = TRUE,默认为false。
  • 您是否尝试过使用 data.table ?天气[chgroup(Weather$File), ] ?
  • arrange(File, Date, Hour) 最终工作。谢谢大家!

标签: r


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这似乎已经解决了问题:)
【解决方案2】:

我正在使用 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)

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多