R语言之基础

Python014

R语言之基础,第1张

向量是 R 语言中最基本的数据类型,在 R 中没有单独的标量(例如 1 本质上是 c(1)) 。

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