R语言简介:

R语言是一门专用于统计分析的语言,有大量的内置函数和第三方库来制作基于数据的表格

准备工作

安装R语言

https://cran.rstudio.com/bin/windows/base/R-3.4.3-win.exe

安装Rstudio

https://download1.rstudio.org/RStudio-1.1.383.exe

打开Rstudio可以看到如下界面

目录类命令:

1.getwd() #查看当前目录

2.setwd('') #设置当前文件保存的目录

加载excel文件:

#<-表示赋值运算,

#使用read.csv()读取本地的csv文件,加载到当前的变量中

statinfo <- read.csv('stateData.csv')

获取子集:

#使用subset()函数,根据数据的不同的条件,划分子集

stateSubset <- subset(statinfo,state.region==1)

highschool <- subset(statinfo,highSchoolGrad > 50)

stateSubsetBracket <- statinfo[statinfo$state.region==1,]

统计分析与分组:

#使用table()函数按照条件对数据集进行分组统计,类似group by
#使用levels()函数将数据进行分段
reddit <- read.csv('reddit.csv') table(reddit$employment.status)
levels(reddit$age.range)

画图:

1.首先安装并引入ggplot2

#安装并导入ggplot2
install('ggplot2')
library(ggplot2)

2.开始作图

#调用qplot方法作图,最少要指定x值和data数据集

qplot(data=reddit,x = age.range)

qplot(data=reddit,x = income.range)

3.将图形按照年龄或收入进行排序展示

#对年龄进行排序
reddit$age.range <- ordered(reddit$age.range,
levels=c('Under 18','18-24',
'25-34','35-44','45-54','55-64','65 of Above'))
#画出年龄的分布直方图
qplot(data=reddit,x = age.range) #查看薪水分布
levels(reddit$income.range) #对薪水进行排序
reddit$income.range <- factor(reddit$income.range,
levels = c('Under $20,000','$20,000 - $29,999','$30,000 - $39,999',
'$40,000 - $49,999','$50,000 - $69,999','$70,000 - $99,999',
'$100,000 - $149,999','$150,000 or more'),ordered = TRUE)
#画出薪水的分布直方图
qplot(data=reddit,x = income.range)

二.单一变量分析

目的:根据提供的facebook的数据,对数据表中的变量进行分析,分析哪些值是异常值,如何修正异常值,如何做出箱线图,直方图等知识点

1.做出用户生日的直方图

#1.导入csv源文件
#2.导入作图包,ggplot
#3.根据日期进行作图
pf <- read.csv('pseudo_facebook.tsv',sep = '\t')
library(ggplot2)
qplot(x=dob_day,data = pf)

2.根据月份统计每天出生的人数

此处要用到分面的知识点,分面是一种将查询的数据集进行在深化的一种途径,使用+号来完成

#1.载入数据集,并确定要展示的属性
#2.scale_x_continuous指的标度x轴连续
#breaks指如何去分割的字段
#3.facet_wrap指的是以dob_month进行分割,ncol指的是按照3列进行显示
qplot(x=dob_day,data = pf) +
scale_x_continuous(breaks = 1:31) +
facet_wrap(~dob_month,ncol = 3)

从图中我们可以看到1月1号出生的人数最多,有接近8000人,可以分析出这些数据有一部分是异常数据,用户在填写用户资料的时候没有正确的选择出身日期或不想要公开自己出身日期

3.好友数量

知识点:限制轴,组距,去除空值,根据性别进行分组

#1.调用is.na()来排除空值,binwidth表示组距是10
#2.limits表示只分析x轴上的0,1000的点
#3.breaks(起始,结束,步长)
#4.facet_wrap()根据字段分组 ~+字段
qplot(x=friend_count,data=subset(pf,!is.na(gender)),binwidth=10)+
scale_x_continuous(limits = c(0,1000),
breaks = seq(0,1000,50))+
facet_wrap(~gender)

4.获取详细的数据(按照性别显示统计值)

#使用by()函数,分组的值,分组字段,总计输出
by(pf$friend_count,pf$gender,summary)

5.做出按年展示用户使用facebook天数的用户的图形

知识点:颜色,坐标轴描述

#1.xlab,ylab表示坐标轴的说明
#2.color是边框色,fill是填充色
qplot(x=tenure/365,data = pf,binwidth=.25,
xlab = 'Number of years using Facebook',
ylab = 'Number of user in simple',
color=I('black'),fill=I('#F79420'))+
scale_x_continuous(breaks = seq(1,7,1),limits = c(0,7))

6.做出facebook用户年龄的图形

提示:可以使用summary(pf$age)来找出边界值

qplot(x=age,data=pf,binwidth=1,
color=I('black'),fill=I('#5760AB'))+
scale_x_continuous(breaks = seq(1,113,5))

7.将图形调整为正态分布

#1.导入gridExtra包
#2.先做出原始的图形
#3.对x轴取log10的对数
#4.对x轴取平方根
#5.将3个图形放在一起进行展示
library('gridExtra')
p1 <- ggplot(aes(x=friend_count),data=pf) + geom_histogram()
p2 <- p1 + scale_x_log10()
p3 <- p1 + scale_x_sqrt()
grid.arrange(p1,p2,p3,ncol=1)

8.做出男性,女性平均好友数量的图形

知识点:频率多边形

#1.将y轴表示成展示比例数据
ggplot(aes(x=friend_count,y=..count../sum(..count..)),
data=subset(pf,!is.na(gender)))+
geom_freqpoly(aes(color=gender),binwidth=10)+
scale_x_continuous(limits = c(0,1000),breaks = seq(0,1000,50))+
xlab('count of friends')+
ylab('Percentage of users with that friend count')

9.做出男性,女性平均的点赞数的图形

#geom = 'freqpoly'表示做的是频率多边形
qplot(x=www_likes,data=subset(pf,!is.na(gender)),
geom = 'freqpoly',color=gender)+
scale_x_log10()

10做出男性,女性的数量的箱线图

知识点:箱线图

#1.geom = 'boxplot'表示图形是箱线图
#2. coord_cartesian(ylim=c(0,250))表示限定y轴的度量
qplot(x=gender,y=friend_count,
data=subset(pf,!is.na(gender)),
geom = 'boxplot')+
coord_cartesian(ylim=c(0,250))

11.做出男性,女性谁获得的处事好友的图

qplot(x=gender,y=friendships_initiated,
data=subset(pf,!is.na(gender)),
geom = 'boxplot')+
coord_cartesian(ylim = c(0,150))

12.查看手机端和pc端登录facebook的比例图

知识点:逻辑运算,逻辑值

#1.查看mobile端的统计数
#2.使用ifelse语句将mobile_likes大于1的数存到新的mobile_check_in变量中,逻辑运算
#3.将其变为因素变量
#4.计算手机端的使用率
summary(pf$mobile_likes)
pf$mobile_check_in <- ifelse(pf$mobile_likes > 0,1,0)
pf$mobile_check_in <- factor(pf$mobile_check_in)
summary(pf$mobile_check_in)
sum(pf$mobile_check_in==1)/length(pf$mobile_check_in)

R语言-单一变量分析的更多相关文章

  1. 基于R语言的数据分析和挖掘方法总结——中位数检验

    3.1 单组样本符号秩检验(Wilcoxon signed-rank test) 3.1.1 方法简介 此处使用的统计分析方法为美国统计学家Frank Wilcoxon所提出的非参数方法,称为Wilc ...

  2. 基于R语言的数据分析和挖掘方法总结——均值检验

    2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, ...

  3. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  4. 机器学习与R语言

    此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...

  5. R语言进行机器学习方法及实例(一)

    版权声明:本文为博主原创文章,转载请注明出处   机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...

  6. R语言︱异常值检验、离群点分析、异常值处理

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...

  7. R语言︱非结构化数据处理神器——rlist包

    本文作者:任坤,厦门大学王亚南经济研究院金融硕士生,研究兴趣为计算统计和金融量化交易,pipeR,learnR,rlist等项目的作者. 近年来,非关系型数据逐渐获得了更广泛的关注和使用.下面分别列举 ...

  8. R语言︱ROC曲线——分类器的性能表现评价

    笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...

  9. R语言︱数据分组统计函数族——apply族用法与心得

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:apply族功能强大,实用,可以代替 ...

随机推荐

  1. 基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案

    基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案 最近在研究Java,涉及命令行编译,使用notepad++编辑器,然后使用javac编译: 之前的几个文件没有中文的内容,都没 ...

  2. 51 Nod 1027 大数乘法【Java大数乱搞】

    1027 大数乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

  3. codeforce 367dev2_c dp

    codeforce 367dev2_c dp 标签: dp 题意: 你可以通过反转任意字符串,使得所给的所有字符串排列顺序为字典序,每次反转都有一定的代价,问你最小的代价 题解:水水的dp...仔细想 ...

  4. c语言字符相关函数

    1.fgetc(getc)fputc(putc)区别: getc和putc都是针对标准输入输出的,而fgetc和fputc可以对任意的文件操作,也可以用fgetc和fputc对标准输入输出操作fget ...

  5. mysql 恢复数据

    前提:保存了需要恢复数据库的文件 .frm 和 .ibd 文件 条件:InnoDB 类型的 恢复表结构1.新建一个数据库--新建一个表,表名和列数和需要恢复数据库相同2.停止mysql服务器 serv ...

  6. UEP-添加表格

    UEP中添加新的表格标签:function initCustomToolBar(){ var strHtml="<table> <tr> <td id=\&qu ...

  7. [国嵌笔记][008-009][远程登录Linux]

    [国嵌笔记][008][远程登录Linux] 1.windows与Linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/iptables stop 3.通过ssh(字符界面) ...

  8. 分布式文件系统FastDFS动态扩容

    当用户量越来越大,则集群中某个group总会到达其极限,这时就得扩展集群的容量了. FastDFS的扩容分为对group纵向扩容和横向扩容 纵向扩容 指在同一个group组中增加服务器,实现数据冗余, ...

  9. windows 防火墙拦截nginx的问题

    今天在azure vm上安装了nginx并配置了代理设置,但域名访问始终无法中转,一开始怀疑是nginx的服务没起来,但在本地访问localhost看下如下界面,证明服务是没问题的. 本地访问没问题, ...

  10. Phpstorm10 主题下载

    ================================================================================ submit:主题 http://ww ...