【问题标题】:format a Date column in a Data Frame格式化数据框中的日期列
【发布时间】:2010-11-01 09:30:07
【问题描述】:

我有以下来自数据框的数据

Name,JoiningDate,AmtPaid
Joe,12/31/09,1000
Amy,10/28/09,100
John,05/06/10,200

加入日期是一个因素(当我sapply 时)。如何将其转换为日期,然后按 JoiningDate 排序?

【问题讨论】:

    标签: r


    【解决方案1】:

    应该这样做(其中 df 是您的数据框)

    df$JoiningDate <- as.Date(df$JoiningDate , format = "%m/%d/%y")
    
    df[order(df$JoiningDate ),]
    

    【讨论】:

    • 我遇到了类似的问题。 mode(as.Date(df$JoiningDate, "%m/%d/%Y")) 怎么可能返回 numeric
    • @老子你应该打开一个新问题,你的查询可能在这里看不到。我相信在内部,日期存储为自 Unix 时间开始(1970 年 1 月 1 日)以来的数字秒数。希望这会有所帮助。
    • 当我这样做时,它会将我的专栏变成 NAs
    • @TravisHeeter 试试这个包,很可能你的日期格式与as.Date 理解的cran.r-project.org/web/packages/anytime/anytime.pdf 不同格式
    • 我遇到与@TravisHeeter 相同的问题,日期列变为NAs。
    【解决方案2】:

    试试这个包,效果很好,并且是为日期/时间制作的......

    library(lubridate)
    Portfolio$Date2 <- mdy(Portfolio.all$Date2)
    

    【讨论】:

      【解决方案3】:

      data.table 包的IDate 类和功能类似于lubridatezoo 包。你可以这样做:

      dt = data.table(
        Name = c('Joe', 'Amy', 'John'),
        JoiningDate = c('12/31/09', '10/28/09', '05/06/10'),
        AmtPaid = c(1000, 100, 200)
      )
      
      require(data.table)
      dt[ , JoiningDate := as.IDate(JoiningDate, '%m/%d/%y') ]
      

      【讨论】:

        猜你喜欢
        • 2021-09-19
        • 2017-12-16
        • 1970-01-01
        • 2021-04-14
        • 2019-01-20
        • 2020-08-12
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        相关资源
        最近更新 更多