as.Date()仅针对日期时间字符串的时间部分返回NA

时间:2018-07-30 20:10:48

标签: r datetime

在数据帧(df_pageviews)中,我尝试将以下列转换为日期时间格式:

created_at
2018-03-23 00:51:01
2018-03-23 02:08:37

这是我使用的代码(基于this):

as.Date(df_pageviews$created_at, format = c("%Y-%m-%d", "%H:%m:%s"))

但是,此代码返回以下值:"2018-03-23" NA, "2018-03-23" NA

我认为格式字符串是正确的,但是我无法弄清楚为什么它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

# replicate the data frame
df_pageviews <- data.frame(
  created_at = c("2018-03-23 00:51:01", "2018-03-23 02:08:37")
)

# convert charachter to POSIXct
df_pageviews$created_at <- strptime(df_pageviews$created_at, "%Y-%m-%d %H:%M:%S")

# check the structure
str(df_pageviews)
# 'data.frame': 2 obs. of  1 variable:
#  $ created_at: POSIXlt, format: "2018-03-23 00:51:01" "2018-03-23 02:08:37"

答案 1 :(得分:1)

考虑使用strptime代替as.Date()。

此外,请小心区分%m(月)和%M(分钟)。您还可以指定时区https://www.stat.berkeley.edu/~s133/dates.html

例如:

strptime("2018-03-23 00:51:01",format="%Y-%m-%d %H:%M:%S")
[1] "2018-03-23 00:51:01 PDT"