这似乎应该很容易,但我无法找到答案。
我希望只将指定的变量转换为日期 - 实际上(不是这个例子)有很多列要转换为日期类。我已在我手动创建的列表中指定了这些列,如下所示。我希望能够为这些列设置日期类。
数据:
library(lubridate)
date1 <- c("19/06/2012", "19/10/2012", "12/08/2012")
var1 <- c("harry", "sally", "dick")
date2 <- c("08/06/2012", "07/11/2012", "19/07/2012")
var2 <- c("london", "paris", "madrid")
date3 <- c("17/07/2012", "18/09/2012", "19/11/2012")
df <- data.frame(date1, var1, date2, var2, date3)
datecols <- list("df$date1", "df$date2", "df$date3")
这是我认为我出错的地方,我设定了设定日期的功能:
setdates <- function(a) {
a <- a %>%
dmy(a)
}
......但是没有懈怠:
lapply(datecols, setdates)
...也不是for循环工作
for (i in datecols) {
setdates(i)
}
我得到解析错误。
不幸的是,我似乎无法找到答案,而且我认为我会让它变得比实际需要的更难。
答案 0 :(得分:2)
如果您不介意使用dplyr
,可以:
library(dplyr)
res <- mutate_at(df, vars(starts_with("date")), dmy)
# date1 var1 date2 var2 date3
# 1 2012-06-19 harry 2012-06-08 london 2012-07-17
# 2 2012-10-19 sally 2012-11-07 paris 2012-09-18
# 3 2012-08-12 dick 2012-07-19 madrid 2012-11-19
它的作用是:将dmy
应用于df
starts_with
"date"
的那些列。