R 中可以用 = 或者 <- 来进行赋值 , <-的快捷键是 alt + - 。
R的下标是从1开始的,和python等不同(python四从0开始的)
当然我们也可以用逻辑进行筛选,例如
负数下标表示不选这个这些下标,例如:
c() 可以合并向量,例如
向量有个比较有趣的性质,当两个向量进行操作时,如果长度不等, 长度比较短的一个会复制自己直到自己和长的一样长。
a 自动变成了 c(3,4,3,4) 然后与b相加 , 得到了下面的结果。
遇到不懂得函数,可以用help("函数")查看函数用法。
矩阵,从本质上来说就是多维的向量,我们来看一看 我们如何新建一个矩阵。
可以看到向量元素变为矩阵元素的方式是按列的,从第一列 到第二列,如果我们想按行输入元素,那么需要加入 byrow = TRUE 的参数:
与向量相似,我们可以用下标来筛选矩阵, 例如:
a[行,列]
当我们对两个矩阵相乘,我们得到的结果是 对应元素两两相乘的结果,例如:
而这不是我们想要的矩阵乘法,在 R 中我们在乘法旁边加两个 百分号来做矩阵乘法:
此外,我们可以用 t() 来求矩阵的转置 , 用 solve() 来求矩阵的逆。
数据框类似矩阵,与矩阵不同的是,数据框可以有不同的数据类型。 一般做数据分析,我们把一个类似 excel 的表格读入 R ,默认的格式 就是数据框 , 可见数据框是一个非常重要的数据结构。
一般来说我们需要分析的数据,每一行代表一个样本,每一列代表一个 变量。
下面我们用 R 内置的数据集 iris 来看一看数据框的使用。
我们用 data 函数调入了 iris 这个数据集 , 然后用 head 函数来看一看这个数据 的前几行 , 可以看到有 sepal 的长度,宽度,petal 的长度和宽度,还有一个变量 Species 来描述样本的类别。
我们可以用 summary 函数来对数据集做大致的了解。
可以直观地看到每个变量的信息,对于几个数值变量,我们可以看到最小值,中位数等等统计信息。而对于 Species 这个分类变量,我们看到的是计数信息。
筛选数据框与矩阵相似,都可以通过数字下标来获取子集,不同地是因为数据框有不同的列名,我们也可以通过列名来获取某一特定列,例如:
我们可以用 names() 函数来获取数据框的列名
并可以通过为其赋值改变列的名字。
列表是一种递归式的向量,我们可以用列表来存储不同类型的数据,比如:
列表有多种索引方式,可以用如下方式获取。
今天我们实验的对象就是一组从原始 R 进化出来的工具链 Tidyverse , 它是由 Hadley Wickham 主导开发的一系列 R 包的集合。 Tidyverse 继承了R语言进行快速统计分析的优势 , 并实现了一些新的理念 , 例如 magrittr 包中的管道操作 , 让线性嵌套的函数组合变得更加清晰易懂;可视化方面中的 ggplot ,使绘图变成搭积木式的图层叠加。
这样的小发明有的改变了分析的运作方式 , 有的改变了使用者的认知方式 , 聚在一起形成了一种新的数据分析的生态链 。具体来看 , Tidyverse 有如下核心组件:
mpg 数据集是刻画不同汽车的排放状况的一个数据集, 总过有 234 个样本 , 11 个变量 。 这 11 个变量分别是:
manufacture: 制造商
model: 车型
dispel: 汽车排放量
year: 制造年度
cyl: 排气管数量
trans: 排放类型
drv: 驱动方式
cty: 每公里耗油量(城市道路)
hwy: 每公里耗油量(高速路)
fl: 油的种类
class: 车的类型
更多数据相关信息可以通过 help(mpg) 指令获取。
在属性映射中加入 color=class 参数后 , 我们可以看到每个点的汽车对应的类型被用 不同颜色表现了出来 , 对于散点图 , 还有 size(大小) , shape(形状) 等等参数 可以用于确定点的属性。
对于条形图的y轴就是数据框中原本的数值时,必须将geom_bar()函数中stat(统计转换)参数设置为’identity’,即对原始数据集不作任何统计变换,而该参数的默认值为’count’,即观测数量。
1.初级入门
《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》,本人没有看过,因此不便评论。
2.高级入门
读了上述书籍之后,你就可以去高级入门阶段了。这时候要读的书有两本很经典的。《Statistics with R》和《The R book》。之所以说这两本书高级,是因为这两本书已经不再限于R基础了,而是结合了数据分析的各种常见方法来写就的,比较系统的介绍了R在线性回归、方差分析、多元统计、R绘图、时间序列分析、数据挖掘等各方面的内容,看完之后你会发现,哇,原来R能做的事情这么多,而且做起来是那么简洁。读到这里已经差不多了,剩下的估计就是你要专门攻读的某个方面内容了。
3、推介你看下这位大咖的CSDN博客,里面有很多有关R语言入门类文章,一定能get到新知识,希望对你有帮助。
博主博客地址:
Data+Science+Insight的博客_CSDN博客-R语言从入门到机器学习,数据科学从0到1,机器学习面试+横扫千军领域博主
博客内容包括:数据科学从0到1、R语言从入门到机器学习、机器学习面试+横扫千军、Python编程技巧高效复用等系列
1、向量是用于存储数值型,字符型或者逻辑型数据的一维数组。执行组合功能的函数为c(),可以用来创建向量。向量可根据位置进行索引,需要用[]。
2、矩阵是一个二维数组,每个元素都拥有相同的模式,可通过函数matrix()创建矩阵。
3、数组是一个可以在两个以上维度存储数据的数据对象。例如,如果创建尺寸(2,3,4)的数组,那么就是创建4个矩形矩阵每个2行3列。数组只能存储数据类型。
4、矩阵和数组一样都只能包含一种数据类型,当有多种模式的数据时,使用数据框就更为方便。数据框可以用函数data.frame () 创建。
5、$ 被用来选取一个给定数据框中的某个特定变量。
6、attach()绑定数据集,detach()解除数据集。
7、with:attach,detach最好在单独的数据框内使用,在多个同名对象最好不要使用,函数with(),可以再具有多个同名对象的数据框内使用,但是必须加入花括号{},这样就无须担心名称冲突了,但是它也有局限性,赋值仅在此函数的括号内生效。
8、列表是一些对象的有序集合。
9,、数据导入 read.table(),其中header = T,代表第一行为变量名称,不作为数据,header = F相反。sep代表数据分隔符,txt为"\t",csv为","。
10、table函数,用 table() 函数统计因子各水平的出现次数(称为频数或频率)。
>sex = c("女","女","女","男","男")
>table(sex)
>sex
男 女
2 3
求众数
>aim = table(sex)[table(sex)==max(table(sex))]
>aim
女
3
> max(table(sex))
[1] 3
> table(sex)==max(table(sex))
sex
男 女
FALSE TRUE
11、 无尺度网络: 是指在某一复杂的 系统 中,大部分节点只有少数几个连结,而某些节点却拥有与其他节点的大量连结。这些具有大量连结的节点称为“集散节点”,所拥有的连结可能高达数百、数千甚至数百万。这一特性说明该网络是无尺度的,因此,凡具有这一特性的网络都是无尺度网络。
12、options(stringsAsFactors = F)
#在调用as.data.frame的时,将stringsAsFactors设置为FALSE可以避免character类型自动转化为factor类型。
13、class():查看数据结构:vector、matrix、array、dataframe、list。
14、str():作用用英语来表示是:check classification of viriables,一般用于检查数据框当中有哪些数据。
15、mode() :查看数据元素类型。
16、typeof() :查看数据元素类型,基本等同于mode(),比mode()更为详细。
17、example():假设有一个函数foo,example("foo"),函数foo的使用示例。
18、apropos():列出名称中含有foo的所有可用函数。apropos("foo",mode="function")。
19、data():列出当前已加载包中所含的所有可用示例数据集。
20、ls():列出当前工作空间中的对象。
21、rm():移除(删除)一个或多个对象。
22、history(#):显示最近使用过的#个命令(默认值为25)。
23、options():显示或设置当前选项。有一个收藏文件有介绍options的功能。
24、boxplot():生成盒型图。
25、sum():计算和。sum(x,na.rm = TRUE)。
26、median():计算中位数。
27、cbind():以列结合变量。cbind(x,y,z)。
28、rbind():以行结合变量。
29、vector():以向量形式结合数据。vector(length = 10)。
30、rep():以矩阵形式结合数据。rep(c(1,,2,3),each = 10)
31、seq():生成一个有序的数列。seq(1,10)。
32、dim():矩阵或者cbind输出的维数。dim(Mydata)。
33、scan():从ascii文件中读取数据。scan(file = "test.txt")。
34、write.table():把一个变量写入到ascii文件。write.table(Z,file = "test.txt")。
35、order():确定数据的顺序。order(x)。
36、merge():合并两个数据框。merge(x,y,by = "ID")。
37、str():显示一个对象的内部结构。str(Mydata)。
38、factor():定义变量作为因子。factor(x)。
39、tapply():tapply(X = Veg$R,INDEX = Veg$Transect,FUN = mean).tapply函数根据第二个变量(Transect)的不同水平对第一变量(R)进行了求平均值运算。还可以求sd,var,length等操作。R语言初学者指南P75详细介绍了这个函数。
40、下一页介绍了sapply和lapply。
41、summary():计算基本信息。
42、table():计算列联表,统计因子各水平的出现次数(频数或频率)。table(x,y)。
43、plot():y对x的图形。pch形状,col颜色。
44、par():par(mfrow = c(2,2),mar = c(3,3,2,1))
mfrow生成一个具有4个面板的图形窗口。mar选项指定每个图形周围空白的大小,底部、左侧、顶部、右侧。
45、paste():将变量连接成字符串。paste("a","b",sep = "")。
46、log(): log = "x",log = "y",log = "xy",生成对数轴。
47、%in%:
a<-c(1,3,13,1443,43,43,4,34,3,4,3)
b<-c(1,13,11,1313,434,1)
a%in%b
# 返回内容#
[1] TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# 取反操作
!(a%in%b)
48、sort()函数是对向量进行从小到大的排序
rank()函数返回的是对向量中每个数值对应的秩
order()函数返回的值表示位置,依次对应的是向量的最小值、次小值、第三小值……最大值等(位置索引)
arrange()函数(需加载dplyr包)针对数据框,返回基于某列排序后的数据框,方便多重依据排序。
49、subset(): df <- data.frame( a = 1:10, b = 2:11, c = 3:12 )
df <- subset(df, select = c(a,c)) #选取列a和c
df <- subset(df, select = -c(a,c) ) #去除列a和c