[英]convert string data.frame to Date
我想知道为什么会发生此错误。 我想在循环中进行顺序转换时使用方括号将其转换。 而且因为我只想能够做到并了解正在发生的事情。
head(clean.deposit.rates)
Date
1 1/31/1983
2 2/28/1983
3 3/31/1983
4 4/30/1983
5 5/31/1983
6 6/30/1983
class(clean.deposit.rates)
[1] "data.frame"
class(as.Date(clean.deposit.rates[[1]], "%m/%d/%Y"))
[1] "Date"
class(as.Date(clean.deposit.rates$Date, "%m/%d/%Y"))
[1] "Date"
as.Date(clean.deposit.rates["Date"], "%m/%d/%Y")
Error in as.Date.default(clean.deposit.rates["Date"], "%m/%d/%Y") :
do not know how to convert 'clean.deposit.rates["Date"]' to class “Date”
您需要使用两个[
括号。 如果为1,则该列保留为数据帧。 通过两个,它成为一个原子向量,可以正确地传递给正确的as.Date
方法
as.Date(df["Date"], "%m/%d/%Y")
# Error in as.Date.default(df["Date"], "%m/%d/%Y") :
# do not know how to convert 'df["Date"]' to class “Date”
由于df["Date"]
是data.frame
类,因此x
参数使用as.Date.default
因为没有as.Date.data.frame
方法。 由于所有if
语句的x
均为FALSE
并通过as.Date.default
继续到该行,因此会触发错误
stop(gettextf("do not know how to convert '%s' to class %s",
deparse(substitute(x)), dQuote("Date")), domain = NA)
使用df[["Date"]]
,该列成为向量,并根据向量的类别传递给as.Date.character
或as.Date.factor
,并返回所需的结果。
as.Date(df[["Date"]], "%m/%d/%Y")
# [1] "1983-01-31" "1983-02-28" "1983-03-31" "1983-04-30" "1983-05-31"
# [6] "1983-06-30"
如果要对单个数据框中的多列执行此操作,请使用lapply
函数。 就像是:
colNames <- c('StartDate','EndDate')
mydf[colNames] <- lapply( mydf[colNames], as.Date, "%m/%d/%Y" )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.