时间匆匆忙忙到了 2019 年的 12 月,我自己也是匆匆忙忙的事情。至于即将到来的年终总结什么的,就随缘了。 最近忙的事,既然暂时告一段落,就有必要开个博客总结一下。 所以这一篇可能内容会比较杂乱反复。
地图和 shiny 玩出新花样
在 shiny
中,选择想要绘制的美国州名,再单独绘制这一个州的情况,达到如下图的效果:
当然,在众多的美国地图文件中,如果选择边缘没有那么精细的版本,就能让渲染速度更快一点。 shiny 实在是一个好用好玩的东西。
R 也能写简单的网络爬虫?
有一个项目是需要整理 2015 到 16 赛季 nba 球员的场均得分、场均助攻等数据。
我们可以直接在 篮球数据网站 进行爬取。
这事本来比较适合直接拿 python
跑,但出于一些原因,还是得用 R。
但意外地发现,其实也不是特别复杂,解析,xpath 查找也都不在话下,核心爬取部分也就不到 30 行代码。
library(tidyverse)
library(xml2)
# 得到某个球员的查询地址
# 举例,输入"Derrick Rose",函数返回"/players/r/rosede01.html"
get_player_url <- function(player_name) {
query_url <- "https://www.basketball-reference.com/search/search.fcgi?hint=&search="
url <- paste0(query_url, str_replace(player_name, " ", "%20"))
player_url <- url %>%
read_html() %>%
html_nodes(xpath='//div[contains(@class, "search-item-url")]') %>%
html_text()
return(player_url[1])
}
# 得到某个球员的数据
# 举例:输入"Derrick Rose",函数返回该球员相关的 Age, Tm等等数据
get_player_data <- function(player_name) {
print(player_name)
base_url <- "https://www.basketball-reference.com"
player_url <- get_player_url(player_name)
if (is.na(player_url)) {url <- paste0(base_url, "/search/search.fcgi?hint=&search=",
str_replace(player_name, " ", "%20"))}
else {url <- paste0(base_url, get_player_url(player_name))}
player_data <- url %>%
read_html() %>%
html_table() %>%
.[[1]] %>%
filter(Season == "2015-16") %>%
select(Season, Age, Tm, Pos, PTS, AST, TRB, STL, BLK, FG, FT, TOV) %>%
mutate(Player = player_name)
return(player_data)
}
病例和对照的匹配
在病例对照研究中,对于一定数量的病例,要在对照组中选择一定比例的对象作为对照,这个过程叫做匹配(Match)。
而匹配一般会以性别,年龄等特征作为变量。
这次的匹配任务是使用年龄进行匹配,但查了网上的一些资料,大都是你要用什么什么,很少告诉你怎么用的。
自己操练了以下,用 MatchIt
可太简单了:
library(MatchIt)
# 匹配
match_it <- matchit(group~年龄, data=data, method="nearest", ratio=1)
a <- summary(match_it)
# 提取匹配好的数据
df_match <- as_tibble(match.data(match_it)[1:ncol(data)])
各种选项和奥秘都在 matchit
函数中,包括 method
,ratio
等等。
荒野大镖客2的游玩体验
这周通关了Rockstar Games 的新作 荒野大镖客2 的一周目。 本来应该专门用一篇博客来聊一些通关的感想,但是看到网路上已经有不少文章,各种深度,各种角度都有。 自己就也不用煞有介事地再去聊了。
对我而言,R星最大的特质在于他会让你关注社会,关注现实。 纵观几部作品,表面上看,他在打造一个越来越真实,细节越来越丰富的开放世界。 但是从剧本层面来讲,他通过游戏让你:认识你自己、关注社会的现状和趋势、找到自己的归宿。
比如亚瑟,是一个忠心耿耿的帮派打手,同时又具有情感和正义感的西部牛仔。 而美国文明和秩序的边界在不断向西部扩张,传统的牛仔和帮派文化注定走下历史舞台。 无论亚瑟如何反抗,都不可避免地成为牺牲。 在这个无比悲壮的故事背后,可以看到R星一直以来对美国历史和社会的观察,而非仅仅把玩家从现实世界抽离。 R星之于育碧,小丑之于漫威,都是一样的道理,我喜欢讨论现实的东西。
另外,最近还做了一个时间序列分析,但没有时间写了。另外,新开了游戏《纪元1800》,这游戏简直太上头了。 连续两天玩到快两点,今天不能再这样了。