将日期 class 设置为多个数据框列,其名称在列表中指定
Setting date class to multiple data frame columns whose names are specified in a list
这看起来应该很容易,但我找不到答案。
我希望只将指定的变量转换为日期 - 实际上(不是这个例子)有很多列要转换为日期 class。我已经在我手动创建的列表中指定了这些列,如下所示。然后我希望能够为这些列设置日期 class。
数据:
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:
lapply(datecols, setdates)
...for 循环也不行
for (i in datecols) {
setdates(i)
}
解析错误。
不幸的是,我似乎找不到答案,而且我想我让这个问题变得比需要的更难了。
如果您不介意使用 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"
.
的列
这看起来应该很容易,但我找不到答案。
我希望只将指定的变量转换为日期 - 实际上(不是这个例子)有很多列要转换为日期 class。我已经在我手动创建的列表中指定了这些列,如下所示。然后我希望能够为这些列设置日期 class。
数据:
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:
lapply(datecols, setdates)
...for 循环也不行
for (i in datecols) {
setdates(i)
}
解析错误。
不幸的是,我似乎找不到答案,而且我想我让这个问题变得比需要的更难了。
如果您不介意使用 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"
.