首页 > 解决方案 > 从 webscraper 更改 R 中的日期但无法转换

问题描述

我正在尝试完成一个问题,该问题从需要合并为一个数据集的两个数据集中提取。为了达到这一点,我需要按年月信息 rbind 两个数据集。不幸的是,第一个数据集需要按年月信息进行统计,我似乎无法弄清楚如何更改日期,因此我可以获得月年信息而不是月日年信息。这是关于雪崩的数据,我需要编写代码来计算雪季每只飞蛾的雪崩数量,定义为 12 月至 3 月。我怎么做?

我一直在尝试将日期的格式转换为月-年,但是在我改变它之后

as.Date(avalancheslc$Date, format="%y-%m")

Date 的所有值都变为 NA 的....帮助!

# write the webscraper
library(XML)
library(RCurl)
avalanche<-data.frame()
avalanche.url<-"https://utahavalanchecenter.org/observations?page="
all.pages<-0:202
for(page in all.pages){
  this.url<-paste(avalanche.url, page, sep=" ")
  this.webpage<-htmlParse(getURL(this.url))
  thispage.avalanche<-readHTMLTable(this.webpage, which=1, header=T)
  avalanche<-rbind(avalanche,thispage.avalanche)
}

# subset the data to the Salt Lake Region
avalancheslc<-subset(avalanche, Region=="Salt Lake")
str(avalancheslc)
avalancheslc$monthyear<-format(as.Date(avalancheslc$Date),"%Y-%m")

# How can I tally the number of avalanches?

我的数据集的最终输出应该是这样的:

date    avalanches
2000-1    18
2000-2     4
2000-3     10
2000-12    12
2001-1    52

标签: r

解决方案


这应该有效(我只在 1 页上尝试过,而不是全部 203)。注意函数中选项的使用,stringsAsFactors = F需要readHTMLTable添加名称,因为1列不会自动得到一个。

library(XML)
library(RCurl)
library(dplyr)
avalanche <- data.frame()
avalanche.url <- "https://utahavalanchecenter.org/observations?page="
all.pages <- 0:202
for(page in all.pages){
  this.url <- paste(avalanche.url, page, sep=" ")
  this.webpage <- htmlParse(getURL(this.url))
  thispage.avalanche <- readHTMLTable(this.webpage, which = 1, header = T,
                                      stringsAsFactors = F)
  names(thispage.avalanche) <- c('Date','Region','Location','Observer')
  avalanche <- rbind(avalanche,thispage.avalanche)
}

avalancheslc <- subset(avalanche, Region == "Salt Lake")
str(avalancheslc)
avalancheslc <- mutate(avalancheslc, Date = as.Date(Date, format = "%m/%d/%Y"),
                 monthyear = paste(year(Date), month(Date), sep = "-"))

推荐阅读