R语言入门纪

前几天在图书馆看书,打算找了统计类的书本补充统计学和数据分析的知识,无意中看到了这本书《菜鸟侦探跳帧数据分析》(我一向喜欢看基础和应用类的入门书籍)。一打开就爱不释手地看了一般,并借回家继续阅读。这是一本日本教授撰写的R语言统计应用小说,情节贴近生活,实在一本难道的好书。被书本介绍的R语言的功能吸引了,回家就装上了R语言,并正式成为R语言的菜鸟一枚
看了书本,装了R系统,尝试了一些功能,不禁被R语言的简洁和强大功能所折服,不愧是为数据分析而生的一门语言!以下跟大家分享我的R语言入门记录。


一、R语言系统安装
1、安装R:
官网:https://www.r-project.org/
2、安装R-studio,类似于R的IDE。
官网:https://rstudio.com/
实际下载地址:
https://rstudio.com/products/rstudio/download/?注意,如果是 32位系统,utm_source=downloadrstudio&utm_medium=Site&utm_campaign=home-hero-cta
注意,如果是32位的系统,这里下载:
https://support.rstudio.com/hc/en-us/articles/206569407-Older-Versions-of-RStudio
由于是免费软件,下载安装几乎一路绿灯,没有任何障碍。

二、R语言基础
使用时打开Rstudio即可, 不用打开R。Rstudio界面如下:
R语言入门纪_第1张图片
我的第一行代码是什么也忘了,估计是类似输入1:200,然后系统直接给出200个数字,如上图,看到了类似python 的界面功能了吧。
常用统计函数:

> sum(1:100)
[1] 5050
> mean(2:14)
[1] 8
> var(3:20)
[1] 28.5
> sd(2:70)
[1] 20.0624

应用举例:

一、模拟商家促销抽奖(书本第一章主题)

这个案例很有意思,同时介绍了统计学的基本概念,以及R最简单常用的功能。
1、变量赋值

> choujiang <- c("未中奖?","一等奖")

2、模拟每天抽奖一次(1%的抽中概率),一周抽奖7次,重复抽奖1000周,统计每周抽中一等奖的数量,并赋值给res变量。代码如下,简洁吧:

res <- replicate(1000, sum(replicate (7, sample (choujiang, 100, prob = c(99,1), replace = TRUE) ) == "一等奖"))

结果如下:

> res
   [1]  6  3  8  3  7  3  4  8  5  7  4 10  6  1  7  3  6  8  5 16  5  4  7  9  7  7 11  7  3  7  8  5  4 10 10  7  8  4
  [39] 10  7  5 10  8  5  6  6  5  5  9  5 15  2  5  7  2  5 11 10  6  4  8  5 12  6  3  7  7  5  3  6  6  6  4  7  7  8
  [77] 10  4  7  7  6  9  5  4  9  5  9 17  9 12  9  7  4  3 12  8  7  7 11  7  3  7  3  8  8  5  7  9  3  7  2  5  6  3
 [115]  6  8  7  8  8  9  3  2  7 11  8 13  5  8  8 10  4  5  6  6  6  5 12  8  4  6  3  3  2  9  8 12  8  4  5  3  3  9
 [153]  6  3  5  6 10  5  6  5  8  5  8  8  4  3  3  4  7  7  4  5  7 11 10  8  6  7  4  8  7  6  7  6  8 13  4  9  6  6
 [191]  6  2 13  6  9 10  5  8  8 13  9  5  8  6  7  6 10  5  4  5 11 12  3  7  3  9  4 11  8 11  3  9 13 12  4  5  6  4
 [229]  6  9  6  9  5  9  5 10  8  4  7  7  5  4  4  5  6  5 10  2  7  1  5  6  8 10 10  5  5  9  8  6  5  5  9 10  7  5
 [267] 11  6 12  6  7  5  5  6  4  6  8  5  8  7  8  4  7  6  7  8  8  8  2  7 10 11 13  9  4  6  8  4 10  8 11 11  7 12
 [305]  5 12  6 14  8  5  6  2  8  9  8  6  2  6  2  8  5 11  6  6  7  8  7 10  7  5  2  8 11 13  8  6  9  4  4  9  5  6
 [343]  6 10  9  3 10  6  8  7  9  5  7  8 12  4  5  8  7  5  8  5 10  4  9  5  5  8  7  5  6  3  5  5  7  8 10  4  9 11
 [381]  5  6  8  7  4 10  5  8  9 11  9  4  3  8  8  2  9  6  9  1  7 10  4 10  7 11  9  4  4  9  6 11  7 10  4  9  7  4
 [419] 15  7  6 10  5  6  9  6 10  8  6 11  7  6  7  3  7  9 10  3  7  8  7 13  3  5  9  4  9  6 11 13  7  9  8  7  6  5
 [457]  6  6 12  8  8 12  8  8 13  9  6  4  7 11  2  9  6  9 10  5 12 11  8  9  5  4  8  7  5  3 12  3  8  4  7  6  4  5
 [495]  6  5  9  4  6  6  8  7  8  4  6  9  6  8  6  9  8  4 11  5  7  6  3  8  9  7  8 10 11  7  8  5  9 15  6  7  5  3
 [533]  7 12  3 11  3  8  8  7  4 11  3  7  7  6  1  8  8  8 12  7 11  9  6  6  4 13  5  8  4  8  7  7  9  6  5  8 10  7
 [571]  9  7  6 10  7  9  8  6  9 11  7  6  7  3  7  8  4  7  8  7 12  8  3  4 15  6  4  5  7 10  7  4  9  3  4 11  7  8
 [609]  9  3 10  5 10  8 10  8  8  5  9  5  5  8 13  4  6  7 12  5 11  8 10  5 14  4  5  7 12  6 10 10  3  7  9  4  9  8
 [647] 12  5  3  5 10  7  7  1  8  5  8 10 10  6 12  7  6  3  2 11  8  4 12  6  5  5  8 14 10  6 14 11  4 11  4  5  5 10
 [685]  7  7  8  9  9 10  5 10  8  4  5  6  9  9  4 13 10  9 10  8  7  8  5 13  9  5  6  5  2  6  5  8  7  8 10  6  7  3
 [723]  8  9 10  9  7  7  8  6  7  7  6 10  5  6  8  7  7  6  6  5  7  8  8 10  2  6  8  6  5  8  6  6  7  5 11  7  7  5
 [761]  4 12  8 10  6  8 10  8  8  6  7 13 12  5  4  6  5  7  5  6  5  7  7  7  5 10  6 10  4  5  7  6  7  8  9  5  8  6
 [799]  9  8  7 12  4  5  7 11  3  6  7  9  6  7  5  6  5  7  4  8  4  7  6 10  5 11  9  2 10  6  9 12  6  8  7  8  5  9
 [837]  5  8  4  9  9 11  8  8  6  9  5  4 10  4  4  7  4  7  7  2  3 10  3 10  5  3  8  7  5  4  4  8  6  7 14  5  6  7
 [875]  8  2  6  5  7  8  5  6  0  4  4  8  4  8  6  7 12  5  3  7  8  4  6  5 11  6  7 11 10  5  6  7 10  6  7 11  6  2
 [913]  7  8  5  6  8  2  9  8  9  4  4  6  2  6  8  6  8  2 11  6  8  8  5  5  8  4  9  9  8  4  7  5  5  4  8  4  7  7
 [951]  9  4  8  8  8 11  4  6  7  6 10  7  5  9  5  8  6 11  6  6  7  5  5  4  7  4 16 10  6  7  9  5  6 10  9  9  5  7
 [989]  7 10 10  7  4  6  5 10  5  6  3  8

3、做直方图分布:代码还是很简洁

> hist(res, breaks = 0:18)

R语言入门纪_第2张图片
4.上图界面不美,那就借助制图软件包ggplot2的帮助吧。
首先安装,然后倒入包,非常简洁的命令:

> install.packages("ggplot2")
> library(ggplot2) 
>> resD <- as.data.frame(table(res))
> ggplot(resD, aes(x = res)) +  geom_histogram(binwidth = 1, color="red", fill = "steelblue") + xlab("该周中奖出现次数") + ylab ("周数") + ggtitle("直方图")

R语言入门纪_第3张图片

二、相关与回归:

导入包并加载数据:

> library(dplyr)
> library(ggplot2)
> menus <- read.csv("menus.csv", stringsAsFactors = FALSE, colClasses = c("factor", "Date", "numeric"))
> menus %>% names 
[1] "品名"   "日期"   "销售额"
> menus %>% head
    品名       日期 销售额
1 关东煮 2015-03-01   4046
2 关东煮 2015-03-02   3437
3 关东煮 2015-03-03   3191
4 关东煮 2015-03-04   3499
5 关东煮 2015-03-05   3536
6 关东煮 2015-03-06   3841

筛选饭团销售并做时间序列图:
> fantuan <- menus %>%   filter (品名 == "饭团")
> ggplot(fantuan, aes(日期,销售额)) + geom_line() +  scale_x_date()+ggtitle("饭团销售额")

R语言入门纪_第4张图片

  1. 筛选面条类和米制品:
>noodles2 <- menus %>%  filter (品名  %in% c("饭团", "味增汤", "咖喱", "茶泡饭", "意大利面", "酱汁炒面", "乌冬面", "什锦面", "拉面")) %>% select (品名,销售额,日期) %>% spread(品名,销售额)

查看筛选结果:

> head(noodles2) 
        日期 茶泡饭  饭团 酱汁炒面  咖喱  拉面 什锦面 乌冬面 意大利面
1 2015-03-01  12751 23698     8460 15594 17644   6245   8849     5947
2 2015-03-02   8881 19505     7412 10959 12756   4469   6063     5010
3 2015-03-03  10006 19974     7377 12073 13764   5159   6060     5263
4 2015-03-04   9480 18208     6959 12249 14670   4399   6283     5150
5 2015-03-05   9752 19624     6518 11690 13371   4791   7138     4883
6 2015-03-06  12534 23872    10249 16332 18845   6039   9264     6410
  1. 获得相关系数:
> noodles2[-1] %>% cor 
              茶泡饭        饭团   酱汁炒面        咖喱       拉面     什锦面     乌冬面   意大利面
茶泡饭    1.00000000 -0.00971532  0.6080210  0.81505643  0.6269526  0.5924683  0.6293278  0.6165647
饭团     -0.00971532  1.00000000 -0.5029012 -0.02819566 -0.5100147 -0.5041264 -0.4892078 -0.4866258
酱汁炒面  0.60802102 -0.50290122  1.0000000  0.62001363  0.9216830  0.9133528  0.8953787  0.9122944
咖喱      0.81505643 -0.02819566  0.6200136  1.00000000  0.6569293  0.6144427  0.6185421  0.6370305
拉面      0.62695258 -0.51001468  0.9216830  0.65692932  1.0000000  0.9220467  0.9129860  0.9188441
什锦面    0.59246831 -0.50412641  0.9133528  0.61444273  0.9220467  1.0000000  0.9099195  0.9101794
乌冬面    0.62932779 -0.48920782  0.8953787  0.61854210  0.9129860  0.9099195  1.0000000  0.8979937
意大利面  0.61656471 -0.48662582  0.9122944  0.63703048  0.9188441  0.9101794  0.8979937  1.0000000

3.散点图矩阵:

> noodles2[,-1]%>% pairs()

R语言入门纪_第5张图片

4.相关与回归析

> ice<-lm(formula=销售量~气温,data=icecream)
> ice

Call:
lm(formula = 销售量 ~ 气温, data = icecream)

Coefficients:
(Intercept)         气温  
     57.167        5.216  

> summary(ice)

Call:
lm(formula = 销售量 ~ 气温, data = icecream)

Residuals:
    Min      1Q  Median      3Q     Max 
-93.841 -19.023  -0.118  16.703 100.156 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  57.1673     3.1086   18.39   <2e-16 ***
气温          5.2161     0.1738   30.01   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 28.07 on 363 degrees of freedom
Multiple R-squared:  0.7127,	Adjusted R-squared:  0.7119 
F-statistic: 900.5 on 1 and 363 DF,  p-value: < 2.2e-16

icecream<-read.csv(‘icecream.csv’)
icecream%>% lm(销售量~气温,data=.) 或者: > lm(formula=销售量~气温,data=icecream)
结果均为:
Call:
lm(formula = 销售量 ~ 气温, data = .)
Coefficients:
(Intercept) 气温
57.167 5.216
即:冰激凌销售量与气温的满足回归模型: Y=5.2X+57.2

icecream%>%ggplot(aes(气温,销售量))+geom_point(size=2)+ggtitle(“冰激凌气温与销售量关系图”)
R语言入门纪_第6张图片
加上回归直线:
icecream%>%ggplot(aes(气温,销售量))+geom_point(size=2)+geom_smooth(method=‘lm’,se=FALSE)+ggtitle(“冰激凌气温与销售量关系图”)

R语言入门纪_第7张图片

R语言还是很强大的,尤其在统计分析应用上,本文只是列举了一部分功能。有兴趣的可以自行学习,这里向各位入门学习推荐这本书。它把理论和实际生活中的应用巧妙地结合在一起,读起来特别有趣,对于R语言入门和统计分析的学习有很好的帮助。日本人写的书有点欧美人的特色,生动有趣。跟我们大陆常见的技术类书籍是完全不同的风格。能把统计学分析的知识,包括各种分布、显著性检验等,解释地生动贴切,阅后会让你觉得统计学和数据分析也不再枯燥了!

你可能感兴趣的:(数据分析,R语言,数据分析,统计分析)