2016-05-13 6 views
-2

Я пишу скрипт, чтобы получить информацию с веб-страниц справки Baseball Reference. В первый раз, когда я написал код, он работал нормально, и все даты, хранящиеся в качестве факторов, были правильно разобраны с датами с помощью функции as.Date(). Тем не менее, через день я запустил тот же скрипт, и я получаю «NA» в некоторых датах переменной, а другие были хорошо преобразованы. Существует еще одна фактор-переменная, в которой все они возвращаются как «NA».используя as.Date() для преобразования дат в качестве факторов, дающих «NA» для некоторых результатов.

Я обдумал это, но я мог найти только проблемы с «NA» из-за отсутствия дней на стоимости (только месяц и год).

Я попытался также изменить sys.setlocale из Португалии в США (LC_ALL»,„английский“), но я получаю тот же результат.

Th скрипт я использовал. Есть ли у вас какие-либо намека на что отсутствует

Благодаря

library(XML) 
Sys.setlocale("LC_ALL","English") # Used after first attempt 


# Web page with players 
url = "http://www.baseball-reference.com/bio/Venezuela_born.shtml" 

# Create a List of the data-frames found in the Web Page, and define the type of colum data 
url_Tables = readHTMLTable(url 
          ,stringAsFactors = FALSE 
          ,colClasses=c("integer","character",rep("integer",17) 
             ,rep("numeric", 4),"factor","factor" 
             , "character", "character") 
         ) 

# Assign First table of the Web Page to a Data.Frame 
batting = url_Tables[[1]] 

summary(batting) 

# Change the type of some colunms 
batting$Birthdate = as.Date(batting$Birthdate, "%b %d, %Y") # For this column some of the values are parsed OK and others not (NAs). 
batting$Debut = as.Date(batting$Debut, "%b %d, %Y")  # For this column all the values are converted as "NA"s 
+1

Почему вы представляете объекты 'Date' как' factor' в первую очередь? – nrussell

+0

Я не могу воспроизвести ваш код. Попробуйте добавить к вашему вопросу результат 'dput (batting)'. –

+0

Я могу воспроизвести код, но не ошибку. Все даты, 'batting $ Birthdate' и' batting $ Debut' в моей системе прекрасны. Нет значения 'NA'. – RHertel

ответ

0

пытаются установить и использовать пакет lubridate, очень полезно для всех дат времен операций:.

library(lubridate) 
mdy(batting$Debut)