【发布时间】:2020-04-09 09:58:05
【问题描述】:
我是 R 新手,无法通过谷歌搜索找到解决方案,所以我们开始吧:
我有一个包含许多列的数据框。其中两个有日期。一列为character,另一列为integer64。两列中的值都类似于“201802171254”。所以它们的格式为Y%m%d%H%M。我想使用函数将它们转换为日期格式。在此之前,我尝试了以下两行:
df$column_character <- as.Date(as.character(c(df$column_character)), format = '%Y%m%d%H%M')
df$column_integer64 <- as.Date(as.character(c(df$column_integer64)), format = '%Y%m%d%H%M')
我知道,这不是最优的,但它们有效。我得到了两列的日期格式。所以我试图将代码放入一个函数中:
date_format <- function(df, col){
col_q = enquo(col)
df %>%
base::as.Date(as.character(c(!!col_q), na.rm = TRUE), format = '%Y%m%d%H%M')
}
date_format(df$column_character)
date_format(df$column_integer64)
这有效,但仅适用于第一个,character 列。
对于integer64 列,我收到错误消息:
Error in as.Date.default(., as.character(c(!!col_q), na.rm = TRUE), format = "%Y%m%d%H%M") :
do not know how to convert '.' to class “Date”
这让我很困惑,因为如果我完全期望字符列会遇到困难,因为在代码中我有一个不必要的步骤(在将其转换为日期之前将其转换为字符,但它已经是字符)。
我的错误在哪里?为什么没有这个功能它可以工作,但我尝试将它用作模板,它的一半不再工作了?
提前感谢您的回答
【问题讨论】: