R语言-单一变量分析
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语言-单一变量分析的更多相关文章
- 基于R语言的数据分析和挖掘方法总结——中位数检验
3.1 单组样本符号秩检验(Wilcoxon signed-rank test) 3.1.1 方法简介 此处使用的统计分析方法为美国统计学家Frank Wilcoxon所提出的非参数方法,称为Wilc ...
- 基于R语言的数据分析和挖掘方法总结——均值检验
2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, ...
- 主成分分析(PCA)原理及R语言实现
原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...
- 机器学习与R语言
此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...
- R语言进行机器学习方法及实例(一)
版权声明:本文为博主原创文章,转载请注明出处 机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...
- R语言︱异常值检验、离群点分析、异常值处理
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...
- R语言︱非结构化数据处理神器——rlist包
本文作者:任坤,厦门大学王亚南经济研究院金融硕士生,研究兴趣为计算统计和金融量化交易,pipeR,learnR,rlist等项目的作者. 近年来,非关系型数据逐渐获得了更广泛的关注和使用.下面分别列举 ...
- R语言︱ROC曲线——分类器的性能表现评价
笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...
- R语言︱数据分组统计函数族——apply族用法与心得
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:apply族功能强大,实用,可以代替 ...
随机推荐
- github免密登陆
import requests import re # 一:先获取登陆页面,拿到authenticity_token: # 1 请求的url:https://github.com/login # 2 ...
- hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)
题目链接 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2 ...
- SpringBoot(四)之thymeleaf的使用
这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎. thymeleaf介绍 简单说, Th ...
- bzoj:4105: [Thu Summer Camp 2015]平方运算
Description Input 第一行有三个整数N,M,p,分别代表序列的长度.平方操作与询问操作的总次数以及在平方操作中所要模的数. 接下来一行N个数代表一开始的序列{X1,X2,... ...
- 强连通分量&hdu_1269&Codeforce 369D
强连通分量 标签: 图论 算法介绍 还记得割点割边算法吗.回顾一下,tarjan算法,dfs过程中记录当前点的时间戳,并通过它的子节点的low值更新它的low,low值是这个点不通过它的父亲节点最远可 ...
- 微信小程序开发官方文档解读
创建页面 在这个教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下.微信小程序中的每一个页面的[路径+页面名]都需要写在 app ...
- @requestBody注解
- python网络编程基础
一.客户端/服务器架构 网络中到处都应有了C/S架构,我们学习socket就是为了完成C/S架构的开发. 二.scoket与网络协议 如果想要实现网络通信我们需要对tcpip,http等很多网络知识有 ...
- HTTP的请求方法OPTIONS
HTTP请求方法并不是只有GET和POST,只是最常用的.据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS.GET.HEAD.POST.PUT.DELETE.TR ...
- ceil与intval区别
float ceil(float value)ceil返回不小于value的最小整数,返回值仍是float型 int intval ( mixed value [, int base]) int ...