如何在不获取NA的情况下将R中的因子转换为日期?

时间:2019-05-29 13:20:33

标签: r date dataframe

对不起,我知道这个问题已被问过一千遍了,但是我想将我的date列转换为date,但是得到NA !!

这是我的数据:

<div class="external-link"></div>

这是我的代码:

     'data.frame':  397774 obs. of  6 variables:
     $ ï..date      : Factor w/ 744 levels "2017-03-15","2017-03-16",..: 113 311 118 109 70 102 9 310 8 172 ...
     $ store        : int  43 43 43 43 43 43 43 43 43 43 ...
     $ item         : int  43 295 296 295 43 43 43 296 296 43 ...
     $ qty          : int  61 73 145 255 267 242 200 121 48 182 ...
     $ unit_price   : num  10.1 13.3 11.9 13.3 10.1 ...
     $ item_category: int  13 13 13 13 13 13 13 13 13 13 …

这就是我得到的:

     df$ï..date <- as.Date(
     paste0("-1",as.character(df$ï..date)), 
     format = "%b-%y-%d")

任何建议将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:2)

这里有几个问题:

  • 显示的日期不是显示的格式字符串的格式。它们的格式为yyyy-mm-dd(或以百分比代码%Y-%m-%d而言),这是默认设置,因此根本不需要指定任何格式

  • 日期已经有年,月和日,因此无需在其上粘贴任何内容

  • as.Date有一个因子方法。无需将它们转换为字符。

尝试一下:

x <- factor(c("2017-03-15","2017-03-16"))
as.Date(x)
## [1] "2017-03-15" "2017-03-16"

答案 1 :(得分:1)

由于格式错误,您得到NA

> as.Date("2017-03-15", format = "%b-%y-%d")
[1] NA

%Y代表年份,%m代表月份,%d代表一天。

> as.Date("2017-03-15", format = "%Y-%m-%d")
[1] "2017-03-15"