使用as.Date()将日期转换为因子为某些结果提供" NA" s

时间:2016-05-13 18:56:15

标签: r factors as.date

我正在编写一个脚本来从棒球参考网页获取信息。 我第一次编写代码时工作正常,所有存储为因子的日期都使用as.Date()函数正确解析为日期。 尽管如此,一天之后我运行了相同的脚本,我在一个变量的某些日期得到了#NA;其他的被转换得很好。还有另一个因子变量,其中所有这些因子都被返回为" NA" s。

我已经对此嗤之以鼻但我只能找到关于" NA" s的问题,因为错过了价值的天数(只有月份和年份)。

我还试图将sys.setlocale从葡萄牙更改为美国(LC_ALL","英语")但我得到的结果相同。

我使用的脚本是。你有任何遗漏的暗示吗?

感谢。

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 个答案:

答案 0 :(得分:0)

尝试安装并使用包lubridate,这对所有日期时间操作非常有用:

library(lubridate)
mdy(batting$Debut)