as.date在数据集中创建一些NA

时间:2018-10-29 04:39:29

标签: r na as.date

我有一个简单的小数据集:

SFdischg$daymo <- as.Date(SFdischg$ddmm, format="%d-%b")
> summary(SFdischg)
    date            ddmm            year           cfs           daymo           
 1/01/1985:    1   01-Apr :   33   Min.   :1984   Min.   : 172   Min.   :2018-01-01  
 1/01/1986:    1   01-Aug :   33   1st Qu.:1992   1st Qu.: 705   1st Qu.:2018-04-04  
 1/01/1987:    1   01-Jul :   33   Median :2000   Median : 948   Median :2018-07-03  
 1/01/1988:    1   01-Jun :   33   Mean   :2000   Mean   :1374   Mean   :2018-07-02  
 1/01/1989:    1   01-May :   33   3rd Qu.:2008   3rd Qu.:1340   3rd Qu.:2018-10-01  
 1/01/1990:    1   01-Nov :   33   Max.   :2016   Max.   :8100   Max.   :2018-12-31  
 (Other)  :11926   (Other):11734                                 NA's   :8           

我希望有一列日期,以便可以绘制时间数据:

daymo

但是,ddmm现在有8个NA,我不知道为什么(并且很难绘制!)。当listenerF(e) { // dont forget to add the event as an argument here console.log(e); console.log("im scrolling!"); } componentDidMount() { window.addEventListener("scroll", this.listenerF); } componentWillUnmount() { window.removeEventListener("scroll", this.listenerF); console.log("unmounted"); } 中没有缺失数据时,少数NA来自何处?如何避免它们?我是否缺少明显的东西?

1 个答案:

答案 0 :(得分:1)

我的猜测是,您在ddmm列中拥有的某些因子数据无法正确解析为日期。您可以使用以下方法揭示这些错误的值:

SFdischg$ddmm[is.na(as.Date(SFdischg$ddmm, format="%d-%b"))]

请注意,由于ddmm列中没有年份组成部分,因此R似乎会自动将当前年份2018分配给该日期。理想情况下,您应该使用包含一年的来源信息来建立日期。

编辑:根据您在下面的评论,有问题的行的日期为19-Feb。这意味着这些日期甚至可能都不是从2018年开始的,这不是not年,并且其2月只有28天。这说明了在解析日期(包括年份)时使用全套信息的重要性。