【问题标题】:Obtaining month and year from date on large vector从大向量上的日期获取月份和年份
【发布时间】:2016-03-12 01:25:57
【问题描述】:

我有一个包含 n 个元素的向量。

从带有一个对象的向量中获取年份和月份很容易

a <- as.Date("01.01.2001", "%d.%m.%Y")
b <- format(a, "%Y%m")

但是,如果我在一个向量中有 1k 个不同的日期,该怎么做?

当我用一个元素替换我的向量时,我得到了一个包含 n 个元素的向量

format.default(结构(as.character(x),names = names(x),dim = dim(x),)错误: 'trim' 参数无效

我尝试转换的向量的输入

"02.01.2011 00:00", "02.04.2000 00:00",...

【问题讨论】:

  • 同样的操作,将"01.01.2001"替换为你的向量名称
  • dput(部分)您的矢量
  • 为我工作。您的矢量中必须有一部分格式不同
  • @etienne 使用as.Date() 全部转换为日期格式。没有抛出任何错误。
  • 你能不能sort你的向量(在as.Date之前或之后)并返回它的headtail

标签: r date


【解决方案1】:

试试

your.character.vector <- c("02.01.2011 00:00", "02.04.2000 00:00")

a <- as.POSIXct(your.character.vector, format = "%d.%m.%Y")
# or, if time is not always 00:00
a <- as.POSIXct(your.character.vector, format = "%d.%m.%Y %H:%M")

c <- as.POSIXlt(a)$mday
d <- as.POSIXlt(a)$mon + 1  # + 1 because mon = 0-11
b <- paste0(c,d)

> b
[1] "21" "24"

# or to add leading zeros where they are missing
b <- paste0(sprintf("%02d",c), sprintf("%02d",d))

> b
[1] "0201" "0204"

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 2017-06-25
    • 2012-02-16
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2021-10-02
    相关资源
    最近更新 更多