簡體   English   中英

dplyr-根據每組兩個條件來安排()

[英]dplyr - arrange () according to two criteria per group

在采樣活動開始之前的五個星期里,我每小時收集數百個農場的天氣。 我想確定采樣事件之前三周的平均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)

但是,似乎rang忽略了group_by函數。 在某些情況下,我具有兩個具有相同小時和日期的服務器場的數據。 它沒有按順序排列每個服務器場,而是按日期和小時的順序排列了df。

我會誤會group_by會做什么嗎? 感謝您的任何幫助。

我使用的“0.5.0.9001”版本dplyr (的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)

group_by對此不是必需的,通常用於當您希望對數據執行某種聚合時。 排列將首先按文件排序,然后按每個文件中的日期排序,然后按每個日期中的小時排序。 這應該為您提供所需的結構。

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

除了我的評論之外,您還可以執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM