【问题标题】:How to reorder the rows of a dataframe by month?如何按月重新排序数据框的行?
【发布时间】:2019-10-06 18:02:18
【问题描述】:

我的目标是按照月份(从 12 月、11 月、10 月等1 月、2 月、3 月等)对数据框的行重新排序。) 每年。

目前我有以下数据框

            Date            Title  Article
1   1 December 2000 PRESS CONFERENCE Article1
2   1 November 2000 PRESS CONFERENCE Article2
3    1 October 2000 PRESS CONFERENCE Article3
4  1 September 2000 PRESS CONFERENCE Article1
5     1 August 2000 PRESS CONFERENCE Article2
6       1 July 2000 PRESS CONFERENCE Article3
7       1 June 2000 PRESS CONFERENCE Article1
8             1 May PRESS CONFERENCE Article2
9      1 April 2000 PRESS CONFERENCE Article3
10     1 March 2000 PRESS CONFERENCE Article1
11  1 February 2000 PRESS CONFERENCE Article2
12   1 January 2000 PRESS CONFERENCE Article3
13   1 December 2001 PRESS CONFERENCE Article1
14   1 November 2001 PRESS CONFERENCE Article2
15   1 October 2001 PRESS CONFERENCE Article3
.
.
.
n    1 January 2001 PRESS CONFERENCE Article

这种结构从 2000 年到 2019 年一直存在。现在,我想把它颠倒过来,从 2000 年到 2019 年每年都得到这样的结果:

Date            Title  Article
1   1 January 2000 PRESS CONFERENCE Article1
2   1 February 2000 PRESS CONFERENCE Article2
3    1 March 2000 PRESS CONFERENCE Article3
4  1 April 2000 PRESS CONFERENCE Article1
5     1 May 2000 PRESS CONFERENCE Article2
6       1 June 2000 PRESS CONFERENCE Article3
7       1 July 2000 PRESS CONFERENCE Article1
8       1 August 2000 PRESS CONFERENCE Article2
9      1 September 2000 PRESS CONFERENCE Article3
10     1 October 2000 PRESS CONFERENCE Article1
11  1 November 2000 PRESS CONFERENCE Article2
12   1 December 2000 PRESS CONFERENCE Article3
13   1 January 2001 PRESS CONFERENCE Article1
14   1 February 2001 PRESS CONFERENCE Article2
15   1 March 2001 PRESS CONFERENCE Article3
.
.
.
n    1 December 2001 PRESS CONFERENCE Article

谁能帮我解决这个问题?我该怎么做?

非常感谢!

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    Date 转换为正确的格式,然后使用dplyr 中的arrange

    library(dplyr)
    df %>% arrange(lubridate::dmy(Date))
    
                 Date Title
    1  1 October 2000 PRESS
    2 1 November 2000 PRESS
    3 1 December 2000 PRESS
    4  1 October 2001 PRESS
    5 1 November 2001 PRESS
    6 1 December 2001 PRESS
    

    使用基础 R

    df[order(as.Date(df$Date, "%d %B %Y")),]
    

    数据

    #Providing small dataset using `dput` will make it easier for other to help
    df <- structure(list(Date = c("1 December 2000", "1 November 2000", 
    "1 October 2000", "1 December 2001", "1 November 2001", "1 October 2001"
    ), Title = c("PRESS", "PRESS", "PRESS", "PRESS", "PRESS", "PRESS"
    )), class = "data.frame", row.names = c("1", "2", "3", "13", 
    "14", "15"))
    

    【讨论】:

      【解决方案2】:

      我们可以从anytime使用anydate

      library(dplyr)
      library(anytime)
      df %>%
          arrange(anydate(Date))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 2023-03-10
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        相关资源
        最近更新 更多