我有几个数据框列表,我想格式化所有数据框列表中每个数据框的日期。这是示例代码:
dfl1$ABC_1$Date = as.Date(dfl1$ABC_1$Date,format="%Y-%m-%d")
class(dfl1$ABC_1$Date)
我知道如何手动更改日期列:
{{1}}
但是我该如何对我所有数据框列表中的每个日期列执行此操作?
答案 0 :(得分:2)
这可以通过lapply
完成:
lapply(dfl1, function(x) {
x$Date <- as.Date(x$Date, format="%Y-%m-%d")
return(x)})
如果要对所有df列表执行此操作,则需要将其存储在列表中,然后可以使用上述调用的稍作修改的版本:
df_list <- list(dfl1, dfl2, dfl3, abclist)
lapply(df_list, function(x) {
x[[1]]$Date <- as.Date(x[[1]]$Date, format="%Y-%m-%d")
return(x)})
这假定Date
列始终具有相同的名称“日期”。
答案 1 :(得分:2)
这是使用get
和assign
的一个选项
nms <- c('dfl1', 'dfl2', 'dfl3', 'abclist')
lapply(nms, function(x) assign(x,lapply(get(x),
function(y) {y$Date1 <- as.Date(y$Date, format="%Y-%m-%d")
return(y)}),
envir = .GlobalEnv))
PS:请注意assign
,因为它会改变您的全局环境.GlobalEnv
。许多R用户会在assign
上提出列表解决方案。