搭建R语言环境

R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。
与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。
RStudio是一款跨平台的R语言IDE,把常用的窗口都整合在让开发者,不用在命令行和绘图窗口跳来跳去,RStudio全部都在一个窗口,让你更方便的来控制。R语言,一直来都没有一个很好的IDE,RStudio算是给R补充了这一块。

软件安装

  • ubuntu下安装r语言以及rstudio
sudo apt install -y r-base r-base-dev
sudo apt install -y rstudio
  • Windows下安装r语言以及rstudio

使用国内的R程序镜像源:R base
使用官方的rstudio下载页面:RStudio

使用初步

模拟百分之一中奖率的一次抽奖活动

> choujiang <- c("未中奖","中奖") 
> sample(choujiang, 100, prob=c(99,1), replace = TRUE)
  [1] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
  [7] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [13] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [19] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [25] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [31] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [37] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [43] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [49] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [55] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [61] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [67] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [73] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [79] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [85] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [91] "未中奖" "未中奖" "未中奖" "未中奖" "未中奖" "未中奖"
 [97] "未中奖" "未中奖" "未中奖" "未中奖"

查看投掷100次骰子各个面出现的几率

> table(sample(1:6,100,replace = TRUE))

 1  2  3  4  5  6 
13 24 14 18 15 16 

绘制直方图

> hist(sample(1:6,100,replace = TRUE), breaks=0:6)

安装插件

要使用ggplot2插件,需要在联网情况下,在rstudio的命令窗口执行

install.packages("ggplot2")

tips:注意"C:\Program Files\R\R-3.4.1\library"目录要有写权限。

> res <- replicate(10000, mean(sample(1:6,100,replace = TRUE)))
> hist(res)
> library(ggplot2)
> dice <- data.frame(骰子 = res)
> ggplot(dice, aes(x=骰子))+geom_histogram(bindwith = .1,fill="steelblue",color="black",alpha=0.5)+xlab("期望值")+ylab("次数")+ggtitle("掷100次骰子后的期望值")

中元之夜

七月十五中元节的午夜班车


拍摄这张照片的时候,其实已经是6号早上的三点了。因为夜班、因为限号,所以中元节只能大晚上的坐车回家。
打了一个共享电单车奔赴夜班车站点的时候,午夜的长安街上空无一人,百无聊赖的牡丹楼店员们还爬在橱窗里面的餐桌前聊天,偶尔还从草丛中跑过一条黄大仙。我还以为没啥活人出来坐午夜公交呢。结果当我跑到惠普大厦门前的时候,发现我掉进了代驾堆里面。这边有小二十个代驾和他们的小电车,在热烈的讨论今天的行情和轶事,大声抱怨着打差评的客人们,说着今天赚了240,还要跑几单。

MySQL的恢复

什么时候需要恢复数据

  • 硬件故障(如磁盘损坏、raid丢失)
  • 人为删除(如误删数据、黑客入侵)
  • 业务回滚(如游戏bug需要回滚)
  • 正常需求(部署镜像库、查看历史某时刻数据)

恢复条件

  • 有效备份
  • 完整日志
  • row格式的binlog(反转SQL)

恢复工具与命令

  • source
  • innodbackupex
  • mysql

案例

恢复某几条误删数据
恢复误删除表、库
将数据库恢复到指定时间点

MySQL示例数据库

MySQL数据库实际上提供了试验用的数据库,类似于MS SQLServer的Advancedworks示例数据库。

tips:数据库文件比较大,下载会比较慢。

#获取
git clone https://github.com/datacharmer/test_db.git
cd test_db
mysql -usujx -p
#导入数据库
mysql> source employees.sql
#数据校验
mysql> source test_employees_md5.sql;
mysql> source test_employees_sha.sql;
#提示OK之后就可以使用了
mysql> select * from departments;e
+---------+--------------------+
| dept_no | dept_name          |
+---------+--------------------+
| d009    | Customer Service   |
| d005    | Development        |
| d002    | Finance            |
| d003    | Human Resources    |
| d001    | Marketing          |
| d004    | Production         |
| d006    | Quality Management |
| d008    | Research           |
| d007    | Sales              |
+---------+--------------------+
9 rows in set (0.00 sec)

mysql> select * from employees order by birth_date desc limit 1,1;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  11157 | 1965-02-01 | Mario      | Cochrane  | M      | 1985-03-30 |
+--------+------------+------------+-----------+--------+------------+
1 row in set (0.25 sec)
mysql> select count(*) from employees;
+----------+
| count(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.11 sec)