【问题标题】:How to convert a column of date string to dates in R如何将一列日期字符串转换为R中的日期
【发布时间】:2016-01-08 18:01:39
【问题描述】:

我有一个 csv 文件,我使用 read.csv 来读取它

ff = read.csv('ff5.csv',  col.names = c('date','mkt', 'smb','hml','rmw','cma','rf'), colClasses = c('character',rep('numeric',6)))

日期列的格式为“197007”。它只给出年份和月份,所以我使用 zoo 包中的 as.yearmon 来转换日期列

as.Date(as.yearmon(date,'%Y%m'))

现在对于日期列中的每个条目,它都有效。但是当我尝试像这样将它分配回列条目时,它给了我字符中的数字!

library(zoo)

ff = read.csv('ff5.csv',  col.names = c('date','mkt', 'smb','hml','rmw','cma','rf'), colClasses = c('character',rep('numeric',6)))

for (i in 1:length(ff$date)){
  date = ff$date[i]
  d = as.Date(as.yearmon(as.character(date),'%Y%m'))
  ff$date[i] = d
}

我应该如何解决这个问题?数据可以在这里下载

http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_5_Factors_2x3_CSV.zip

【问题讨论】:

  • 您将日期作为字符向量读取。这意味着,当您将 date[i] 转换为日期并将其放回 ff$date 时,它​​必须将其转换为字符,因为它要进入的向量是一个字符 (ff$date)。将 d 分配给 ff$date2 而不是 ff$date 应该可以清除它。

标签: r date csv


【解决方案1】:

无需使用循环。

txt <- "197007
198511
201512"

library(zoo)
ff <- read.table(text=txt, col.names = "date")
ff$date <- as.Date(as.yearmon(as.character(ff$date), "%Y%m"))

str(ff)
'data.frame':   3 obs. of  1 variable:
 $ date: Date, format: "1970-07-01" "1985-11-01" ...

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2023-03-26
    • 1970-01-01
    • 2021-03-07
    • 2011-11-28
    相关资源
    最近更新 更多