我有一个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'。它只给出年份和月份,所以我在动物园包中使用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
}
我该如何解决这个问题?数据可以在这里下载
答案 0 :(得分: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" ...