创建一个新列,它将条件中两个其他列之间的时间差异给予R中的另一列

时间:2016-05-20 07:08:47

标签: r date difftime

我的数据是这样的。 df是数据帧的名称

Status          ArrivalDate                   ClosedDate       
Closed          2015-12-01 04:40:24         2015-12-08  10:12:08
In Progress     2015-12-03 06:40:00
Pending         2015-12-12 08:40:54
Cancelled       2015-12-06 04:40:24         2015-12-18  11:33:50

状态有4个因素:已关闭,已取消,正在进行中,待处理 进行中和待定没有ClosedDates

我想创建另一个列,只有在状态为已关闭或已取消时才会给出ArrivalDate和ClosedDate之间的时差。

这是我现在使用的代码:

df$Life[df$Status=="Closed"|df$Status=="Cancelled"]<-difftime(df$Arrival.Date,df$Closed.Date)

这是我收到的错误消息

  

as.POSIXlt.character(x,tz,...)出错:     字符串不是标准的明确格式

PS:当我尝试两个日期时,difftime()正常工作。当扩展到整个列时,它会显示错误。

1 个答案:

答案 0 :(得分:0)

df$Life[df$Status=="Closed"|df$Status=="Cancelled"]<-difftime(as.POSIXct(df$Arrival.Date, format='%d-%m-%Y %H:%M:%S'),as.POSIXct(df$Closed.Date, format='%d-%m-%Y %H:%M:%S'))

假设您的日期是欧洲(DMY)格式,如果它们是美国(MYD),只需交换%m%d