【发布时间】:2016-05-05 01:35:56
【问题描述】:
我已经为这个问题搜索了堆栈溢出,并且有几个解决方案,但它们都不适合我,因为大多数解决方案只适用于短而完整的数据集。我有两列都是 481029 行长。它们都包含 dd.mm.YYYY 形式的日期。一个是订购日期,一个是交货日期。目的是计算差异(=deliverydate - orderdate)。问题是两列中都缺少一些日期。所以有时有交货日期但没有相应的订单日期,反之亦然。 1. 我该如何处理? 2. 如何将数据转换为日期形式?我的结果是:
ddate <- data.frame(data$deliveryDate)
> summary(ddate)
data.deliveryDate
? : 39419
2013-04-04: 5285
2012-07-03: 5079
1990-12-31: 4660
2013-01-01: 4585
2013-04-09: 4565
(Other) :417499
> class(ddate)
[1] "data.frame"
> ddate <- factor()
> as.Date(ddate, format= "%d.%m.%Y")
character(0)
> mean(ddate-odate)
[1] NaN
Warning message:
In Ops.factor(ddate, odate) : ‘-’ ist nicht sinnvoll für Faktoren
> class(ddate)
[1] "factor"
> ddate[1]
[1] <NA>
as.POSIXct(ddate)
character(0)
> ddate[1]
[1] <NA>
Levels:
> as.Date(ddate, format= "%d.%m.%Y")
character(0)
>class(odate)
[1] "factor"
> as.Date(ddate, format = "%d.%m.%Y")
character(0)
> class(ddate)
[1] "factor"
> ddate <- as.Date(ddate, format = "%d.%m.%Y")
> class(ddate)
[1] "Date"
> odate <- as.Date(odate, format = "%d.%m.%Y")
> summary(odate)
Min. 1st Qu. Median Mean 3rd Qu. Max.
NA NA NA NA NA NA
> head(odate)
character(0)
> mean(ddate-odate)
Time difference of NaN days
> ddate
character(0)
> str(ddate)
Class 'Date' num(0)
> str(odate)
Class 'Date' num(0)
> difftime(ddate,odate, units = ("days"))
Time difference of days
我希望这不会太混乱和混乱。我只是尝试了很多东西,但我不明白。结果总是 NA 或类似的东西...... 谢谢大家!
【问题讨论】:
-
日期变量已转换为因子。通过
read.csv或朋友读取数据时使用 as.is=TRUE。然后它们将作为字符读入,您可以应用as.Date函数。 -
如果你正确格式化你的日期向量,你可能想使用
difftime(datevector2, datevector1)。 -
谢谢lmo和Phann!