【问题标题】:converting to date format in dataframe in R在R中的数据框中转换为日期格式
【发布时间】:2020-06-19 09:11:41
【问题描述】:

我想将我的日期列转换为实际日期格式。我无法使用 as.Date 进行转换。请你帮助我好吗?我尝试了以下。但它不起作用。 1)as.POSIXct(as.character(df1$Date, format="%Y%m%d")) 2)as.Date(as.character(Date),"%Y/%m%/d").

    > head(df1)
          Date                sim                obs
    2 43091.25 313.62295499999999             314.39
    3 43093.25 313.60034200000001             314.43
    4 43094.25         313.608948             314.31
    5 43095.25 313.56323200000003             314.24
    6 43096.25 313.52330000000001              314.2
    7 43097.25 313.47250000000003 314.29000000000002
    > str(df1)
   data.frame': 700 obs. of  3 variables:
     $ Date: chr  "43091.25" "43093.25" "43094.25" "43095.25" ...
     $ sim : chr  "313.62295499999999" "313.60034200000001" "313.608948" 
                      "313.56323200000003" ...
     $ obs : chr  "314.39" "314.43" "314.31" "314.24" ...

【问题讨论】:

    标签: r date


    【解决方案1】:

    无需使用外部包,只需指定Excel使用的来源即可:

    Date <- c("43091.25", "43093.25", "43094.25", "43095.25", "43096.25", "43097.25")
    
    as.Date(as.numeric(Date), origin = "1899-12-30")
    # [1] "2017-12-22" "2017-12-24" "2017-12-25" "2017-12-26" "2017-12-27" "2017-12-28"
    

    【讨论】:

    • 小时被截断
    • @Waldi 我认为 OP 仅在日期之后。
    【解决方案2】:

    具有 43ddd.dd 模式的日期通常来自 Excel。
    你可以使用openxlsx

    openxlsx::convertToDateTime(as.numeric("43091.25"))
    [1] "2017-12-22 06:00:00 CET"
    

    【讨论】:

      【解决方案3】:

      Waldi 的回答很棒,openxlsx 也很棒。作为将来遇到此问题的任何人的替代方案,您还可以使用看门人:

      df <- tribble(~Date, ~sim, ~obs,
            43091.25, 313.6222956, 314.39,
          43093.25, 313.60034200000001, 314.43,
          43094.25, 313.608948, 314.31)
      
      df %>%
        mutate(Date = janitor::excel_numeric_to_date(Date))
      

      生产:

        Date         sim   obs
        <date>     <dbl> <dbl>
      1 2017-12-22  314.  314.
      2 2017-12-24  314.  314.
      3 2017-12-25  314.  314.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 2021-12-19
        • 2021-04-21
        • 1970-01-01
        • 2020-08-15
        相关资源
        最近更新 更多