r - 从 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
解决方案
这应该有效(我只在 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 = "-"))
推荐阅读
- amazon-ec2 - AWS EC2 启动模板与启动配置
- php - Response() 不尊重 API 资源结构
- gulp - 具有全局变量的 Gulp 管道
- extjs - 如何使鼠标光标自动出现在文本框中?
- android - 尝试在 android studio 上构建颤振应用程序,设备没有得到检测
- php - PHP,(如何?)是否可以将 $GLOBALS 数组传递给 shell_exec
- python - 如何使用 mousepressEvent 打开一个新的小部件
- node.js - 无法使用节点 js 和 firestore/firebase 发送通知
- c# - 自定义 NuGet 包产生“无法加载文件或程序集 System.Runtime,版本 = 4.2.0.0”
- django - Django 调试:如何在模板中漂亮地打印对象