一、数据科学

数据科学:计算和统计技术的综合应用,用于解决一些真实世界中的问题。
计算:获得结果
统计:分析和建模
真实世界:机器学习、AI

数据科学Data Science = 统计+数据处理+机器学习+科学探究+可视化+商业分析+大数据

数据科学:数据收集-提出初始问题-解决问题-阐释方案
数据科学不是统计学。
统计学:包括更多数学和理论领域的内容,偏向算法。
数据科学:更偏向实践应用。数据可视化、数据分析预测、图像处理、自然语言处理。

数学基础:概率论、统计学、线性代数。
R语言:开源免费、顶尖的统计+可视化、超过1W个支持packages、强大扩展功能可以自己修改代码块、跨平台运行、支持交互式、支持并行计算。
R语言是交互式命令,按行运行命令的。
R语言基于内存计算的数据分析语言,计算很快。
R不用声明变量的类型。
在输入命令时按上下键,可快速选择前面输入过的命令。
RStudio是R的IDE,即集成开发环境。

二、Rstudio介绍

RStudio介绍:
Console工作台
Workspace
新建:
1、R Script脚本
2、R notebook演示代码
3、R Markdown
4、Shiny Web App创建网站应用
5、Text File文本
6、C++ File
运行:Run,按行运行
导入数据:workspace中的import dataset,增加package可以导入更多类型数据
帮助:help(“函数名称”) 或者 help(函数名称) 或者 ?函数名称

三、快捷键操作

快捷键操作:
1、添加和取消代码注释【Ctrl+Shift+C】
2、入赋值符号【Alt + -】
3、块代码执行【Ctrl+Enter】
4、全部代码执行【Ctrl+Shift+Enter】
5、列模式操作【Alt+Shift+鼠标左键选择】
6、RStudio界面字体方法缩小【Ctrl 和 + -】

四、R代码常见命令

赋值:<-
查看变量个数和名称:ls()
清除变量:rm(变量名)
等价(赋值):=
关系运算符:==
输出:变量名 或者 print(变量名)

语法:
1、公式
例如 用求根公式求解

2、数据集调用
data()

3、语法
变量:对应于常量,用于存储临时数据,可被更改。每次使用数据时,通过变量名即可调用该数据。
变量/对象名称:易读、易理解。
命名力求简洁易懂,避免使用已存在的公式和变量名。
R语言区分大小写,因此大写Apple和小写apple代表不同变量。
R语言中命名时,变量和公式需使用小写字母,使用下划线在名称中分开词语,变量名需为名词,公式名需为动词。
在中缀操作符,例如= + - <- 两端加入Space空格,
方程调用时,使用同样规则。
始终在逗号,后面加一个空格。
一行中键入多个空格键,也是可以的。此时空格用于代码格式排版/对齐
花括号:{}
左花括号{不可以自成一行,它下面还需要跟着一个新行
右花括号} 独立一行作为结尾,后面跟有else除外,则可以合并为一行
当使用代码缩进时,双击两次空格键,不要使用tab或者tab+Space

五、包Packages

包Packages
安装包:导航栏-tools-install packages
R语言中的函数、方法、数据集以包的形式实现,包类似于软件中的插件概念,用来实现某一功能或算法。

#安装单个包
Install.packages(“包名称”)
#安装多个包
Install.packages(c(“包1”,”包2”))
#调用包
Library(包名)
#查看目前已经安装了哪些包
Installed.packages()

六、数据类型

1、data frame数据框

2、Vectors: numeric、character、logic
Numeric 数值型向量:各项元素均为数值
Character 字符型向量:带引用符号的文本
Logical 逻辑型向量:TRUE 或 FALSE(常用于数据筛选)

3、Factors机器学习以及回归分类中常用
Factors是R独有的数据类型,类似字符类型但不是。它是因子类型数据,用于存储分类数据,区别于字符型数据一个很明显特征是在数据的维度中以重复形式反复出现。
将数据设置为factors类型而不是字符类型,能更方便的对分类数据分别进行处理。
在处理分类模型,例如回归、机器学习,factors类型的数据对于此类面向分类的模型意义非凡。

#查看参数类型
class()
#查看数据对象的结构
str()
#查看数据的前6行
head()
#提取数据集中的某一列
【数据集名称】KaTeX parse error: Expected 'EOF', got '#' at position 10: 【列的变量名称】 #̲获取数据集中各列名称 name…【列的变量名称】)

代码:

data("iris")
class(iris)
str(iris)
head(iris)
iris$Sepal.Length
names(iris)
length(iris$Sepal.Length)
a <- "hello"
class(a)
z <- 3==2
class(z)
class(1)
#将它设置为整数类型
class(1L)
class(iris$Species)
levels(iris$Species)

七、类型(向量等)

向量
向量和矩阵在数据科学中起到核心作用,在机器学习和算法分析中,是常见的数据类型。理解和掌握非常重要。
向量是R中数据存储和数据处理的基础结构,它是一维数组,加减乘除均基于向量类型数值。
使用函数c创建向量,c是concatenate的缩写,它能将数值合并为一个向量。将这个向量看为一个列向量。
例:num <- c(20,20,20)
使用引用符号””创建character类型数据,单引号也行。
例:fruit <- c(“apple”,“banana”,“orange”)
查看数据各项名称:names()
创建等差向量:seq()
例:seq(1,10)
Seq(1,10,2)
方括号[]来获取向量中指定元素;
转换为字符型数据:as.Character( )
R中对于automatic类型的数据,提供了一种coercion强制转换的机制,coercion能帮助R灵活的处理数据,这类函数的特点是as.开头,后面跟有目标函数类型。
如果一个向量同时有数值型和文本型,结果会强制将数值型转换为文本型,这也是R中coercion可能存在的诸多被遗漏报错的原因之一。

NA:Not Available,数据不可用。也是一种logic类型向量,它产生的原因:数据丢失、数据格式转换错误。
当试图使用函数将一种类型的数据转换为另一种数据类型时,可能会遇到以下情况就是not available。

代码:

#创建向量
num <- c(20,20,20)
num
#判断是否为向量
is.vector(num)
fruit <- c("apple","banana","orange")
scores <- c(Chinese = 90, English = 90, Math = 90)
scores
class(scores)
names(scores)
#如果想用引号来写字符串,可以用下面形式
scores <- c("Chinese" = 90, "English" = 90, "Math" =90)
scores
#另种方式
scores <- c(90, 90, 90)
decline <- c("Chinese", "English", "Math")
names(scores) <- decline
scores
seq(1,10,2)
1:50
class(2:10)
class(seq(2,3,0.2))
scores[2]
scores[c(1,3)]
scores[1:2]
scores["Chinese"]
scores[c("Chinese", "English")]
#corecion
is.logical(TRUE)
#如果向量中有两种类型,R会自动按照coercion方式处理,默认你输入的是同一种类型向量
num1 <- c(1==2, 1)
class(num1)
num2 <- c(1, "123")
num2
class(num2)
x <- 1:5
y <- as.character(x)
y
#Not Available
class(NA)
T
F
z <- c(1, "b", 2)
as.numeric(z)

数据排序(映射)
Sort(): 将数值升序排序
Order(): 将数值作为输入,返回值为数值排序的索引。排序的是索引值
Rank(): 返回数据的排序序号。
向量运算:
规则:向量的每一个元素都进行相应的运算;进行运算的向量长度可以不同。结果向量长度等于参与运算的最长向量的长度。其中,较短的数据将重复循环进行运算。
R中一个容易被忽略的error错误是recycling

代码:

#数据排序
data()
CO2
head(CO2)
str(CO2)
class(CO2$uptake)
sort(CO2$uptake)x <- c(32, 90, 1, 42, 9, 3)
sort(x)
index <- order(x)
#数值排序的索引,因为第3个最小,所以第一个是3
index
x[index]
#可以按数值对名称进行排序。首先使用order获得CO2的排序索引,然后将这个索引关联到地名。
#根据引索的信息,可知道每个地方的二氧化碳排放数值。
co2 <- c(CO2$uptake)
sort(co2)
index <- order(co2)
CO2$Type[index]
#which.max()用于索引向量中的最大值,相当于一个标签可以在其他维度中对数据进行定位。
max(CO2$uptake)
CO2max <- which.max(CO2$uptake)
CO2$Type[CO2max]x <- c(3,24,2,50,120)
rank(x)x <- c(2,3,5)
y <- c(10,20,30,40)
z <- x+y
z

条件判别筛选
逻辑运算符& 仅在两边同时成立时,关系式成立。
Which() 返回一个logical值,用于筛选出匹配对象。精确检索。将返回的逻辑值转变为对应的引索找到数据就很方便。
Match() 返回一个引索。用于指明所要查找的数据项在该列中的序号。
%in% :如果不是想获取数据提取引索,仅仅确认观测值是否在某一列中,使用%in%,将返回一组logical值,判断数据是否存在。

代码:

data()
CO2
index <- CO2$conc < 200
index
CO2$conc[index]
sum(index)#逻辑测试
TRUE & FALSE
TRUE & TRUEcity <- CO2$Type == "Mississippi"
output <- CO2$uptake <= 30
index <- city & output
index
#which
index <- which(CO2$Type == "Quebec")
index#match
index <- match(c(7.7, 16, 34.8),CO2$uptake)
index
CO2$Plant[index]#%in%
c("Boston","Quebec","Tokyo") %in% CO2$Type

基础绘图

分布图
基础绘图函数plot(),通过设置参数绘制出不同图形。
Plot(x,y)
或者plot(y~x)
With() :with(数据集,公式) 将公式绑定于数据集中,无需使用$符号
Hist() :直方图
Boxplot() :箱线图
Image() :可以在矩阵中显示颜色,创建彩色或者灰度的网格,可用于显示三维或空间信息。

代码:

#基础绘图
head(BOD)
x <- BOD$Time
y <- BOD$demand
plot(x,y)
require(stats)
head(cars)
plot(cars$speed,cars$dist)
plot(cars$speed~cars$dist)
#绘制正弦函数
plot(sin,-pi,2*pi)
with(BOD,plot(Time,demand))
#直方图
x <- with(BOD,Time)
hist(x)
BOD$demand[which.max(x)]
#箱线图
boxplot(decrease~treatment,data = OrchardSprays, log = "y", col = "bisque")
#网格图
x <- matrix(1:120, nrow = 12, ncol = 10)
image(x)
image(t(volcano)[ncol(volcano):1,])
#也可通过增加参数绘制出等高线,进一步完善图像
x <- 10*(1:nrow(volcano))
y <- 10*(1:ncol(volcano))
image(x,y,volcano,col=terrain.colors(100),axes=FALSE)
contour(x,y,volcano,levels=seq(90,200,by=5),add = TRUE,col="peru")
axis(1,at = seq(100,800,by = 100))
axis(2,at = seq(100,600,by = 100))
box()

编写函数

Function()
Function_name(,,_,…)
函数用于实现一个特定功能,例如绘制箱线图、求和
函数也属于objects
可以将函数名使用<- 赋值给变量名称

条件表达式
If(布尔表达式){
Statements
}

代码:

#if else
scores <- 70
if(scores > 60){print("通过考试");
}else{print("不通过考试");
}#else if
a <- 85
if(a > 90){print("A");
}else if(a > 80){print("B");
}else if(a > 70){print("C");
}#ifelse
a <- 50
ifelse(a > 60, "通过", "不通过")
#条件控制将缺失值都替换为0
x <- c(1, 50, 36, NA, 345, 120)
test <- ifelse(is.na(x),0,x)
test
sum(is.na(test))#any() all()
a <- c(0,125,32,NA,20)
test <- any(is.na(a))
test
a <- c(10,20,50,120)
test <- all(a>0)
test
sum(is.na(test))

For循环
重复循环一段代码

代码:

#for循环
for(i in 1:5){print(1:i)
}for(i in 1:5){print(i)
}for(i in 1:5){print(i:5)
}a = 0
for(i in 1:50){a = a + iprint(a)
}

数据向量化操作
R语言中,所产生或处理的元素都叫做对象(object)
操作对象:变量、字符串、方法函数
Sapply函数能对模型向量化,即数据向量化
Apply函数族:apply、lapply、sapply、tapply、mapply、vapply

代码:

#向量化操作
x <- 1:5
cos(x)x <- 1:5
sapply(x,cos)#练习
a <- c(1,2,3)
b <- c(2:4)
y <- c(a,b,a)
y
s <- 3*a + b +1
s
sin(a)

数据导入
数据:
R自带的数据
外部数据:MySQL、Office(word、excel、ppt)、PDF、txt
路径读取数据:
Getwd(): 获取工作路径
Setwd(“ ”): 设置工作路径

Data frame 数据框
处理这个数据前需要安装tidyverse包。相当于是一个整合的工具。
Tidy data(整洁格式数据):
tidy data的特征
每一个变量都有自己独立的一列
每一个观测值都有自己独立的一行
每一个数据都是独立的单元格
拥有tidy的特征是使用dplyr中mutate, summary等函数的基础

dplyr包:数据处理高效操作1
使用dplyr包对data frame进行增删、合并、筛选、拆分
Dplyr提供了大量的函数和常见操作
Mutate(): 向数据集增加一列
Filter(): 按条件筛选。行操作,删除序号2所在的行,使用!=命令
select(): 选择列,如果列有很多,只想看其中几列,可使用该命令

代码:

#dplyr操作
library(dplyr)
#mutate
scores <- mutate(scores, total = Chinese + English + Math)
#view()
View(scores)
#filter
filter(scores, total > 400)
dele_2 <- filter(scores, name != "Cindy")
#select
stem <- select(scores, Science, Math, Computer)

dplyr包:数据处理高效操作2

以上需要中间变量作数据传递,使用pipe %>% 操作符的情况下,可省略中间变量。使用 %>% 后,select和filter参数将不再包括原始数据集。

代码:

#example
64 %>% sqrt()
log2(sqrt(64))
#练习
1024 %>% sqrt() %>% log2()

描述性统计分析
Dplyr包中的summarize()可用于描述性统计分析
参数包含描述性统计分析,summarize()将结果存储为table类型,每个参数只允许返回一个值。

代码:

#使用鸢尾花数据为例
library(dplyr)
data(iris)
View(iris)
s <- iris %>% filter(Species == "setosa") %>% summarize(x1=mean(Sepal.Length),x2=sd(Sepal.Length))
s
Setosa <- iris %>% filter(Species == "setosa")
summarize(Setosa,x3=median(Sepal.Length),x4=min(Sepal.Length),x5=max(Sepal.Length))

数据排序
使用dplyr包对表格进行排序
Arrange(data,列名)按照该列指标对数据集进行升序排列
如果要降序排列,在arrange()中添加desc()
嵌套排序
筛选排序:按要求筛选指定行:top_n(data,n,列名)

代码:

#数据排序
library(dplyr)
data(CO2)
CO2 %>% arrange(uptake) %>% head()
CO2 %>% arrange(desc(uptake)) %>% head()
#嵌套排序
CO2 %>% arrange(Type,uptake) %>% head()
#按要求筛选指定行
top_n(CO2,3,uptake)

八、实例

1、

#创建变量
apple <- 20
price <- 5
#计算总价
sum_price <- apple*price
#显示结果
sum_price
c <- 1:5
plot(c)
#文本型数据
slogan <- "i love math"

2、

#获得帮助
#函数帮助文档
help("log")
help(log)
?log
#使用参数名可改变args默认顺序,args可查看参数信息,example获得代码示例
args(log)
example(log)
log(8)
log(8, base=2)
log(base=2,x=8)#保留字或操作符
help("+")
?"+"#获得与weight mean有关的文档
help.search("weight mean")
#扩展包的帮助文档
help(package="ggplot2")
#获取R的Html形式的帮助文档
help.start()

3、

a <- 1
b <- 1
c <- -1
a
b
c
ls()
x1 <- (-b+sqrt(b^2-4*a*c))/(2*a)
x2 <- (-b-sqrt(b^2-4*a*c))/(2*a)
x1
x2

看公棕号【R语言数据分析与实践】所做笔记。
后面若有其他补充,会持续更新本篇文章。
感兴趣的可以关注@统计布迪!!

R语言基本介绍 | 数据科学、Rstudio介绍、快捷键操作、R代码常见命令、数据类型、示例代码等等相关推荐

  1. Python 在数据科学中一直打压 R 语言?

    两三年前,凭借着强大可视化功能的 R 语言在统计领域可谓是风光无限,不过随着更简单易上手的 Python 崛起,R 语言的市场似乎正逐步被 Python 吞噬. 作者 | Nick Heath 译者 ...

  2. R语言入门第二集 实验一:R 语言数据结构、数据导入与数据处理

    R语言入门第二集 实验一:R 语言数据结构.数据导入与数据处理 一.资源 R语言基本数据结构练习和数据的导入和处理对象常用函数练习--东北大学大数据班R语言实训第一次作业" R(4)求解数据 ...

  3. R语言导出为html,科学网—[转载]R语言中数据的导入与导出(笔记) - 刘朋的博文...

    !!!help文档!!! 1.导入数据语句为mydata 要分析的.csv数据(.xlsx另存为...)导入.数据导入后可以edit(mydata),R语言工作区就会弹出数据, 可以进行编辑和修改.还 ...

  4. 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇

    对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言.这两种语言各有优缺点,掌握这两种语言大 ...

  5. R语言图形用户界面数据挖掘包Rattle介绍、安装、启动、介绍(Using the rattle package for data mining)

    R语言图形用户界面数据挖掘包Rattle介绍.安装.启动.介绍(Using the rattle package for data mining) 目录

  6. r语言 读服务器数据,R语言数据实战 | 安装R语言

    原标题:R语言数据实战 | 安装R语言 1.R的获取和安装 获取和安装R很容易(这也是它"亲民"的地方),具体步骤如下: Step 1: 登陆R语言官方网站https://www. ...

  7. python和r语言做大数据_R和python大数据

    数据科学界华山论剑:R与Python巅峰对决 如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习 ...

  8. R语言处理缺失数据的5个常用包

    R语言处理缺失数据的5个常用包 1.常用缺失数据处理包 2. MICE 包 2.1基本介绍 2.2 实例展示 3.Amelia包 3.1基本介绍 3.2实例展示 4.missForest包 4.1基本 ...

  9. r语言读取excel数据_R语言操纵Excel进行数据透视与批处理

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...

最新文章

  1. [摘录]第五章 与奋斗者分享利益
  2. 全生命周期管理,是趋势更是未来
  3. scikit-image基本用法(上)
  4. vscode添加源文件_VSCode自制的IDE编译多个源文件
  5. 人工智能python小程序_Python:一个可以套路别人的python小程序
  6. java 泛型 子类_Java泛型:要求泛型成为某种类型的子类
  7. IntelliJ IDEA For Mac 快捷键,够骚,速度收藏!
  8. 2015-5-23PDF的下载链接
  9. 用java做一个校园网站,基于jsp的校园网站-JavaEE实现校园网站 - java项目源码
  10. ocm认证年薪多少_年薪 100 万在 IT 行业中,属于什么水平 ?
  11. html借助JS简单实现图片闪烁功能
  12. 新手剪辑师秒变大神 高级感视频剪辑的几种常用技巧
  13. 软件著作权转让的流程是怎么样的
  14. 基于区域生长的图像分割算法!
  15. 电脑安装不了pr提示不满足系统要求怎么办?
  16. Django的数据库创建、连接与迁移
  17. uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文)
  18. 2022第七届少儿模特明星盛典 小主持人江姿莹 T台风采展示
  19. 【通俗易懂学JAVA】——public void与public static void的区别
  20. Vue路由守卫(导航守卫)

热门文章

  1. 如何凝练具体的关键科学问题?
  2. vue实现消息badge 标记_Badge 标记
  3. 新浪微博开发三----------------------发微博
  4. 帖子的评论及回复表的数据库设计
  5. 手把手教你从0到1搭建vue3+ts+vite+element-plus简易后台管理系统
  6. js 万年历农历转阳历 方法_非常酷的javascript实现万年历功能
  7. 提高亚马逊关键词搜索排名的方法
  8. DX 纹理像素格式转换算法 R10G10B10A2 转 R8G8B8A8
  9. 【算法与数据结构】海康相机接收数据转Mat结构
  10. 如何邀请好友注册您的网站(模拟百度网盘)