【发布时间】:2017-07-06 12:11:37
【问题描述】:
所以,data 是一个由许多列组成的数据框,其中一个名为 lpep_pickup_datetime 的日期和时间格式为“01/01/2016 12:39:36 AM”
我想按日期和时间分析这些数据,因此我尝试创建一个名为 pickup_date 的新列和一个名为 pickup_time 的包含 AM 或 PM 信息的列。
我使用 strsplit 函数将字符串拆分为以下形式:c("01/01/2016", "12:29:24", "AM"),我正在尝试创建上述列从这些数据中。
我写了以下代码:
data$lpep_pickup_datetime=strsplit(data$lpep_pickup_datetime, " ")
data$pickup_date=data$lpep_pickup_datetime[[1]][1]
for (i in seq(1,90181))
{
data$pickup_time[i]=data$lpep_pickup_datetime[[i]][2]
}
这是非常低效的,因为遍历 90181 行数据需要很长时间。有没有更好的方法来完成这项任务?
谢谢。
【问题讨论】:
-
请展示一个可重现的小例子和预期的输出?
-
从
dplyr包中签出separate()和unite()。 -
将日期时间解析为 POSIXct 之类的日期时间类会更有用,之后您可以根据需要提取部分。
-
建议不要玩弦乐。而是将它们转换为日期时间对象并分别提取日期和时间,如示例所示。