R语言基础
R语言是用函数处理数据
1、R与Rstudio
2、数据类型
3、数据结构
4、函数和R包
5、文件读写
6、绘图(一个应用的方向)
7、应用专题
一、R语言 入门认知
1.R语言与RStudio
1.1 什么是R
是什么:编程语言,软件,环境
作用:数据处理,统计,可视化
优点:开源,可扩展(R包,安装到电脑上使用这些R包),简单有效
1.2 什么是R Studio(让R语言变得更好用的软件)R语言的命令提示符是 “>”
集成开发环境
图形界面(给简陋的R语言披上了好看的外衣)
开源免费
1.3 如何在R Studio中新建项目(管理工作目录的最佳方式,setwd也可以,但是这个更简单)
步骤:file > new project > new directory
比如新建一个名为 LearnR的project,选择存放路径。新建好了看RSstudio的右下角模块中会有提示。
1.4 新建脚本(一个装代码的文件)
步骤:file > new file > R script
1.5 RStudio 介绍
脚本编辑器、控制台(代码运行和结果显示)、environment(对象/变量列表) history(历史命令)、集成窗口
1.6 字号设置(略)
1.7 与R”交互“
用户——发送命令
R——执行并返回结果
(1)控制台窗口
代码语言:javascript复制sqrt() #函数的典型特征,英文单词后面加一个括号。括号前面的英文是个函数,括号里面处理的东西是个数据。
(2)脚本编辑器
运行的方式是点run
脚本的运行方式有两个
(1)逐行运行 光标放在一行的任何位置
(2)选中运行 运行的快捷键是:ctrl enter
注释
使用“#”为脚本添加注释。让自己和其他协作者了解代码的用途。
R自动忽略“#”右侧的任何内容
保存
新建一个脚本,然后脚本保存。那么脚本就保存到了project里面。
代码语言:javascript复制比如刚才新建了"LearnR"的project,这个脚本就默认保存到了和“LearnR”的project的同一个文件夹里面。
和“setwd”一个功能。
下次直接双击LearnR.Rproj即可打开Rstudio,打开后工作目录已经自动设置好。
2 R语言在跟你说啥
1、输出结果
代码语言:javascript复制命令运行结果
图片
......
2、报错:Error
代码语言:javascript复制检查命令
检查环境
修正后重新运行
3、警告:warning
代码语言:javascript复制忽略,后面如果有报错或意外结果再检查
4、没反应
代码语言:javascript复制例如
>a=3 5
> #运行完出现大于号,表示已运行完成
5、太长时间卡住不懂
中止(点击红色键)或重启
6、出现“ “
代码语言:javascript复制命令不完整,补全或按ESC键退出
7、出现提示信息
代码语言:javascript复制检查是否有error,没有就可以忽略
8、进一步选择
回答它,不能不管。
二、数据类型和向量
1 数据类型:数值型、字符型、逻辑值
代码语言:javascript复制数据值(numeric):1.3 2
字符型(character):"a" 带着引号出现,单引号和双引号都行。引号里装啥都是字符。不装引号的话容易找不到对象
逻辑型(logical):TURE 或者 FALSE 或者 NA(存在但未知) null(不存在)
代码语言:javascript复制判断数据类型的函数:class(),将要判断的内容写在括号里面
2 常见报错:引号、拼写错误、大小写
处理报错是数据分析的常态
代码语言:javascript复制学会找报错的关键词
关键词 unexpect 出现的时候说明代码写错了。?在哪儿就是哪里有问题
function 函数有问题
3 一些敲代码的小技巧
代码语言:javascript复制tips1:打出前几个字母,即可出现提示,摁上下键可翻动,摁 tab 键可自动补全
tips2:光标放在 > 后面,摁向上键,即可修改上一条命令重新运行
4 逻辑型数据
代码语言:javascript复制比较运算的结果是逻辑值
>
<
<=
>=
== 判断前后两个是否相等,如3==5 FALSE
!= 判断前后两个是否不相等,如3!=4 TURE
代码语言:javascript复制逻辑运算 多个逻辑条件的连接
与 & 例如: 3<5&4>5 FALSE
或 | 例如: 3<5|4>5 TRUE
非 ! 例如: !(4>5) TRUE
5 数据类型的判断和转换【前面学了class() 函数】
代码语言:javascript复制is族函数,判断,返回值为TRUE或者FALSE
is.numeric() 是否数值型数据 is.numeric("4") F #形式大于内容
is.logical() 是否逻辑型数据
is.character() 是否字符型数据
代码语言:javascript复制as族函数实现数据类型之间的转换
as.numeric() 将其他数据类型转换为数值型
as.logical() 将其他数据类型转换为逻辑型
as.character() 将其他数据类型转换为字符型
三、向量认知
1 多个数据如何组织?
批量的数据如何组织?了解数据结构的概念
1.1 数据结构包括四类:向量,数据框,矩阵,列表
注意:
(1)数据框约等于”表格“,不是完全等于表格。因为数据框不是电脑上的一个真实文件,并且要求每一列只能有一种数据类型。但是数据框可以导出,可以导出为一个表格。
(2)数据框单独拿出的一列是向量(也是一串同一个类型的数据),视为一个整体。
(3)一个向量只能有一种数据类型,可以有重复值。
1.2 向量及后续 练习(钉钉群里的R_01文件)
双击.RProject文件,直接打开。
脚本打开是乱码的解决方式,ipad截图。
2 向量的生成
2.1 向量的生成(向量是一串同一种数据类型组合成的整体)
有4种办法
(1)用c()逐一放到一起 【 虽然只有一个字母,但是这也是个函数c】
代码语言:javascript复制>c(2,5,6,2,9)
>c("a","f","md","b") #字符型的数据用c组合的时候每个数据都要用引号"",要不然会找不到对象。
(2)连续的数字用冒号
代码语言:javascript复制>1:5 #输出的结果是 1 2 3 4 5
(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm 【随机数函数可以用来编数据练习】
代码语言:javascript复制>rep("x",times=3) #输出的结果是 "x""x""x"
>seq(from=3,to=21,by=3) #输出的结果是:3,6,9,12,15,18,21
>rnorm(n=3) #输出3个随机数
(4)通过组合,产生更为复杂的向量【上难度了】
代码语言:javascript复制>paste0(rep("x",times=3),1:3) #输出的结果是:"x1""x2""x3"
[拆解上面的函数] x x x ,1 2 3
paste0做了个连接的事情,相同位置连接在一起,0表示是无缝连接。
2.2 对单个向量进行的操作
(1)赋值【标准的符号是:<- 随意的符号是:= 还有一个快捷键是alt加减号】
代码语言:javascript复制>x <- c(1,3,5,1) #规范的赋值符号
>
>x 这个输出的结果是:1,3,5,1
[运行完第一行代码就出现了一个大于号。直接运行x就行了]
代码语言:javascript复制>x = c(1,3,5,1) #这个是随意的写法
代码语言:javascript复制#赋值和输出一起实现
【第一种方法,加个括号】
>(x=c(1,3,5,1))
【第二种方法,把两句代码写在同一行上,两句代码中间用分号隔开,这个方法更加常用】
>x=c(1,3,5,1);x
关于变量名称的规则:变量名称简单点比较好
可以使用的名字:字母(c不行,因为c是一个函数)、英语单词(函数名字不可以用)、字母和数字组合(但是必须是字母在前面开头)、下划线可以用
不可以使用的名字:变量命名里面带空格不能用(可以用下划线替代空格和中划线)、中文名不能用
(2)简单数学计算
代码语言:javascript复制>x=c(1,3,5,1)
>x 1
>log(x)
>sqrt(x)
(3)根据某条件进行判断,生成逻辑值向量
代码语言:javascript复制>x=c(1,3,5,1)
>x>3 #输出的结果是F F T F
>x==3
【==:这个返回的结果是FALSE 或者 TURE】
(4)初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
代码语言:javascript复制>x=c(1,3,5,1)
>length(x) #长度
代码语言:javascript复制>x=c(1,3,5,1)
>unique(x) #去重复 第一次出现不叫重复,第2次出现或第多次出现才叫重复
#输出的结果是1,3,5
代码语言:javascript复制>x=c(1,3,5,1)
>duplicated(x) #判断下元素中有没有重复,第一次出现算没重复
#输出的结果是F F F T
【如果想反过来,就用!这个非常重要,需要记住】
代码语言:javascript复制>x=c(1,3,5,1)
>table(x) #重复值统计
#输出的结果
代码语言:javascript复制>x=c(1,3,5,1)
>sort(x) #排序,R语言按照自己的想法排,那么怎么看R语言自己的想法呢?答:用问号加函数名 ?sort 查看帮助文档
【查看完帮助文档后,可以自己改默认值,但是要在作者允许的范围内】
>sort(x,decreasing = F)
>sort(x,decreasing = T)