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. (转)Android Studio Error:Failed to resolve: com.android.support:appcompat-v7:25.1.0解决方案

    今天不知道为什么导入eclipse项目后就出现了错误,没导入之前是正常使用AS的 Error:(26, 13) Failed to resolve: com.android.support:appco ...

  2. zoj 3228:Searching the String

    Description Little jay really hates to deal with string. But moondy likes it very much, and she's so ...

  3. HDU 2546 饭卡(01背包裸题)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. [bzoj3953] [WF2013]Self-Assembly

    将正方形视为连接字符间的边.比方说正方形上存在A+,B-,就从A-往B+连边,表示字符可以通过这个正方形进行变换. 如果能构成环的话就可以无穷大了...判环随便写个拓扑什么的... #include& ...

  5. HDU6235-Permutation-水题-2017中国大学生程序设计竞赛-哈尔滨站-重现赛

    Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  6. Linux-vmware tools安装与cdrom挂载(转)

    昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存,发现不能实现虚拟机与主机之间的直接通讯,后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故. 一个 ...

  7. [学习OpenCV攻略][013][Mat - 基本图像容器]

    Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针. 矩阵属于多个 Mat 对象, ...

  8. MYSQL 数据库导入导出命令

    在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生.所以一般推荐用SQL脚本形式导入.下面分别介绍两种方法. MySQL命令行导出数据库 1,进入MySQL目录下的bin ...

  9. dedesms中的导致生成静态页面多出空白行解决办法

    前几天给朋友用织梦仿一个手机网站,保存处理好的代码,页面头部在浏览里莫名其妙多了一段空白区域,用调试工具查看,发现是代码里多了一行&#65279.后来发现很多网友在生成织梦页面的时候,头部 ...

  10. Java进阶篇(四)——Java异常处理

    程序中总是存在着各种问题,为了使在程序执行过程中能正常运行,使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行.这就是Java的异常处理. 一.可捕获的异常 Java中 ...