【发布时间】: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 应该可以清除它。