0

嗨,我在 R 中有一个快速的问题,

例如,我们可以将字符转换为日期

v <- c(2008101, 20081202, 20081103)
date <- as.Date(as.character(v), format("%Y%m%d"));date

但是我怎样才能转换v<- c(200801, 200802)2008-01and 2008-02

4

2 回答 2

2

像这样简单的东西呢:

##Give each entry a date
v = paste0(v, "01")
##Convert as before
date = as.Date(as.character(v), format("%Y%m%d"));

您甚至可以编写一个小函数来自动执行此操作:

to_date = function(v) {
  v = as.character(v)

  missing_day = nchar(v) < 7
  v[missing_day] = paste0(v[missing_day], "01")
  as.Date(v, format("%Y%m%d"))
}

##Last value is missing the date
v = c(2008101, 20081202, 20081103, 200811)
to_date(v)
于 2013-04-26T13:06:17.333 回答
0

这是另一种选择:

foo <- function(x){
  x <- as.Date(as.character(x), format("%Y%m%d"))
  newDates <- lapply(strsplit(as.character(x), "-"), "[", -2)
  sapply(newDates, function(x) paste(x[1],x[2],  sep="-"))
}

> foo(v)
[1] "2008-01" "2008-02" "2008-03"
于 2013-04-26T13:35:37.693 回答