将因子类中的间隔日期转换为日期类?

时间:2014-02-11 03:28:27

标签: r

我有一个从website获得的数据集。在此数据集中,有一个“日期”列,其类是因子。我需要将它们转换为日期类。所以我的问题是;

  1. 我应该如何将其转换为日期?
  2. 我如何处理像“1 / 2011-12 / 2012”
  3. 这样的间隔日期
  4. 只有月份和年份值?所以这引起了一些问题,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您想要的,但这是一种方法:

df <- read.csv("map.csv")
dates <- t(data.frame(strsplit(as.character(df$Date),"-")))
df$dateFrom <- as.Date(paste0("01/",dates[,1]), format="%d/%m/%Y")
df$dateTo   <- as.Date(paste0("01/",dates[,2]), format="%d/%m/%Y")
head(df[,c("Date","dateFrom","dateTo")])
#             Date   dateFrom     dateTo
# 1 1/2010-12/2010 2010-01-01 2010-12-01
# 2 1/2011-12/2011 2011-01-01 2011-12-01
# 3 1/2012-11/2012 2012-01-01 2012-11-01
# 4        12/2012 2012-12-01 2012-12-01
# 5 1/2013-12/2013 2013-01-01 2013-12-01
# 6        12/2012 2012-12-01 2012-12-01

这会将您的“日期”字段解析为“从”和“到”日期,并将这些字段作为额外列添加到df。由于as.Date(...)确实需要一个完整的日期(单独的月份和年份是不够的),所以我在所有情况下都将日期强制到了本月的第一天。