Получение NA при преобразовании столбца из char в дату в data_frame - PullRequest
0 голосов
/ 03 февраля 2019

Я получаю NA, когда пытаюсь преобразовать тип данных из символа в дату, используя as.Date.

Ниже приведен мой код.пожалуйста, дайте мне знать, что я делаю не так здесь.

>stock_data=rbind(read_csv("BHELEQ.csv"))
>class(stock_data$Date)
[1] "character"
>str(stock_data)
Classes ‘spec_tbl_df’, ‘tbl_df’, ‘tbl’ and 'data.frame':    1488 obs. of  13 variables:
 $ Symbol               : chr  "BHEL" "BHEL" "BHEL" "BHEL" ...
 $ Series               : chr  "EQ" "EQ" "EQ" "EQ" ...
 $ Date                 : chr  "02-Feb-2017" "03-Feb-2017" "06-Feb-2017" "07-Feb-2017" ...
 $ Prev Close           : num  140 139 143 144 152 ...
 $ Open Price           : num  140 140 144 145 151 ...
 $ High Price           : num  141 143 146 155 157 ...
 $ Low Price            : num  138 140 142 140 150 ...
 $ Last Price           : num  139 143 144 151 157 ...
 $ Close Price          : num  139 143 144 152 156 ...
 $ Average Price        : num  139 142 144 150 154 ...
 $ Total Traded Quantity: num  5345140 7444644 8314922 45093133 25137024 ...
 $ Turnover             : num  7.44e+08 1.05e+09 1.20e+09 6.78e+09 3.87e+09 ...
 $ No. of Trades        : num  28583 37426 38420 206695 105435 ...

...
...

> stock_data$Date<-as.Date(stock_data$Date, format = "%d-%m-%Y")
> str(stock_data)
Classes ‘spec_tbl_df’, ‘tbl_df’, ‘tbl’ and 'data.frame':    1488 obs. of  13 variables:
 $ Symbol               : chr  "BHEL" "BHEL" "BHEL" "BHEL" ...
 $ Series               : chr  "EQ" "EQ" "EQ" "EQ" ...
 $ Date                 : Date, format: NA NA NA ...
 $ Prev Close           : num  140 139 143 144 152 ...
 $ Open Price           : num  140 140 144 145 151 ...
 $ High Price           : num  141 143 146 155 157 ...
 $ Low Price            : num  138 140 142 140 150 ...
 $ Last Price           : num  139 143 144 151 157 ...
 $ Close Price          : num  139 143 144 152 156 ...
 $ Average Price        : num  139 142 144 150 154 ...
 $ Total Traded Quantity: num  5345140 7444644 8314922 45093133 25137024 ...
 $ Turnover             : num  7.44e+08 1.05e+09 1.20e+09 6.78e+09 3.87e+09 ...
 $ No. of Trades        : num  28583 37426 38420 206695 105435 ...

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Сработало, когда я использовал as.data.frame.Date

stock_data$Date<-as.data.frame.Date(stock_data$Date, format = "%d-%m-%Y")

вместо

stock_data$Date<-as.Date(stock_data$Date, format = "%d-%m-%Y")
0 голосов
/ 03 февраля 2019

Чтение ?strptime формат, который вам нужен был

stock_data$Date <- as.Date(stock_data$Date, "%d-%b-%Y") 

Или есть другие библиотеки, которые могут работать с датами, когда вам не нужно явно указывать формат.

Например: - lubridate

library(lubridate)
stock_data$Date <- dmy(stock_data$Date)

или anydate функция из anytime библиотека

library(anytime)
stock_data$Date <- anydate(stock_data$Date)
...