我有如下所示的数据框(测试):
abx start stop abx2 start2 stop2 abx3 start3 stop3
cipro 07/10/12 07/10/12 flagyl 07/10/12 07/17/12 n/a n/a n/a
vanco 07/12/2012 07/15/2012 levo 07/20/2012 07/27/2012 n/a n/a n/a
这一直持续到 start9/stop9。我想将所有日期转换为标准日期格式。
我编写了一个函数来根据日期中的字符数转换开始日期。计划为停靠点编写类似的函数。
dateconv <- function(x) {
as.character(x)
z <- ifelse(nchar(x) == 8, "y","Y")
date <- as.Date(x, format =paste0("%m/%d/%", z))
rm(z)
}
test[,grep("^start", names(test))] <- dateconv(test[,grep("^start",
names(test))])
任何想法我做错了什么?收到此错误: as.Date.default(x, format = paste0("%m/%d/%", z)) 中的错误:不知道如何将“x”转换为“日期”类
更新(2015 年 2 月 20 日):感谢理查德的评论,我得到了这个工作(真的很喜欢 grep("st(art|op)" :
g <- grep("st(art|op)", names(test), value = TRUE)
test[g] <- lapply(test[g], function(x) {
x <- as.character(x)
as.Date(x, format = paste0("%m/%d/%", ifelse(nchar(x) == 8, "y", "Y")))})