我正在尝试解决一个问题,该问题来自需要组合为一个数据集的两个数据集。为了达到这一点,我需要按年份-月份信息重新整理两个数据集。不幸的是,第一个数据集需要按年份-月份信息进行计数,而且我似乎无法弄清楚如何更改日期,因此我可以使用月份-年份信息,而不是月份-日-年份信息。 这是有关雪崩的数据,我需要编写代码,将雪季中每个飞蛾的雪崩总数完全定义为12月至3月。我该怎么办?
我一直在尝试将日期格式转换为月-年,但是在我用
进行了更改之后as.Date(avalancheslc$Date, format="%y-%m")
日期的所有值都将变为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
答案 0 :(得分:0)
这应该可以工作(我只在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 = "-"))