首页 > 解决方案 > 如何将 365 天转换为日期类型并合并列?

问题描述

我有一个带有军事格式的年列、日(1/365 天,未指定月份)和小时的数据框。我想知道如何将它们组合到 class 的向量中Date

year /  day  / hour

2004  / 33  /  0845

2005  / 133  / 1300 

2005 /  180 /  1600

我正在尝试获得一列 class Date

标签: rdatetime

解决方案


您可以首先paste将 data.frame 的行放在一起,然后将字符向量解析为具有以下内容的Date向量as.Date

df <- data.frame(
    year = c("2004", "2005", "2005"),
    day = c("32", "133", "180"), 
    hour = c("0845", "1300", "1600"),
    stringsAsFactors = FALSE
)

df
#>   year day hour
#> 1 2004  32 0845
#> 2 2005 133 1300
#> 3 2005 180 1600

as.Date(apply(df, 1, paste, collapse = "/"), format = "%Y/%j/%H%M")
#> [1] "2004-02-01" "2005-05-13" "2005-06-29"

在这里,%Y读取 4 位数的年份、%j读取日期、%H读取十进制小时(24 小时)和%M读取十进制分钟。


推荐阅读