R语言入门之创建数据集

您所在的位置:网站首页 创建一个数组c语言 R语言入门之创建数据集

R语言入门之创建数据集

2024-01-07 07:28| 来源: 网络整理| 查看: 265

码字不易,转发请注明出处:http://blog.csdn.net/qq_28945021/article/details/52100765

摘要

随着大数据的火爆发展,适合数据分析及生成图表的R语言也在“最受欢迎的编程语言”中上升到了17位。R语言的种种特性令其十分易于进行数据分析,并因其能通过简短的代码生成一目了然的图令众多数据分析师垂涎三尺。进行数据分析的第一步是先拿到数据,本文就简单描述一下R语言的各种数据集——向量、矩阵、数组、数据框和列表的创建及使用。

向量

向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来 创建向量。值得注意的是,单个向量中的数据类型是固定的,比如数值型向量中的元素就必须全为向量。

#向量创建使用示例 > a a [1] 1 2 5 3 6 -2 4 > b b [1] "one" "two" "three" > c c [1] TRUE TRUE TRUE FALSE TRUE FALSE

注意这里的逻辑型向量中,TRUE/FALSE是R语言中自带的,是无法被用户所重写的。而T/F却不同,所以就算能将TRUE/FALSE简写为T/F。但建议还是不要这样做。这是一个好习惯。

通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。例如:

> a[1] [1] 1 > a[c(1,3)] [1] 1 5 > b[1:3] [1] "one" "two" "three"

最后一个语句中使用的冒号用于生成一个数值序列。例如,a #按行填充的2*2矩阵 > cells rnames cname > mymatrix mymatrix C1 C2 R1 1 26 > #按列填充的2*2矩阵 > mymatrix mymatrix C1 C2 R1 1 24 R2 26 68

我们可以使用下标和方括号来选择矩阵中的行、列或元素。X[i,]指矩阵X中的第i 行,X[,j] 指第j 列,X[i, j]指第i 行第j 个元素。选择多行或多列时,下标i 和j 可为数值型向量,如:

> x x [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 > x[2,] [1] 2 4 6 8 10 > x[,2] [1] 3 4 > x[1,4] [1] 7 > x[1,c(4,5)] [1] 7 9

矩阵都是二维的,和向量类似,矩阵中也仅能包含一种数据类型。当维度超过2时,不妨使 用数组。当有多种模式的数据时,不妨使用数据框。

数组

数组(array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建,形式如下:

> myarray z z , , C1 B1 B2 B3 A1 1 3 5 A2 2 4 6 , , C2 B1 B2 B3 A1 7 9 11 A2 8 10 12 , , C3 B1 B2 B3 A1 13 15 17 A2 14 16 18 , , C4 B1 B2 B3 A1 19 21 23 A2 20 22 24

如你所见,数组是矩阵的一个自然推广。它们在编写新的统计方法时可能很有用。像矩阵一 样,数组中的数据也只能拥有一种模式。 从数组中选取元素的方式与矩阵相同。上例中,元素z[1,2,3]为15

数据框

由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更 为一般。数据框将是你在R中常处理的 数据结构。 数据框可通过函数data.frame()创建:

> mydata patientID age diabetes status patientdata patientdata patientID age diabetes status 1 1 25 Type1 Poor 2 2 34 Type2 Improved 3 3 28 Type1 Excellent 4 4 52 Type1 Poor

每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。 选取数据框中元素的方式有若干种。你可以使用前述(如矩阵中的)下标记号,亦可直接指 定列名。如:

> patientdata patientID age diabetes status 1 1 25 Type1 Poor 2 2 34 Type2 Improved 3 3 28 Type1 Excellent 4 4 52 Type1 Poor > patientdata[1:2] patientID age 1 1 25 2 2 34 3 3 28 4 4 52 > patientdata[c("diabetes","status")] diabetes status 1 Type1 Poor 2 Type2 Improved 3 Type1 Excellent 4 Type1 Poor > patientdata$age [1] 25 34 28 52

第三个例子中的记号$是新出现的 。它被用来选取一个给定数据框中的某个特定变量。例 如,如果你想生成糖尿病类型变量diabetes和病情变量status的列联表,使用以下代码即可:

> table(patientdata$diabetes,patientdata$status) Excellent Improved Poor Type1 1 0 2 Type2 0 1 0

在每个变量名前都键入一次patientdata$可能会让人生厌,所以不妨走一些捷径。可以联 合使用函数attach()和detach()或单独使用函数with()来简化代码。

attach()、detach()和with() 函数attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路 径中的数据框,以定位到这个变量。 > summary(mtcars$mpg) Min. 1st Qu. Median Mean 3rd Qu. Max. 10.40 15.42 19.20 20.09 22.80 33.90 > plot(mtcars$mpg,mtcars$disp) > #也可写成: > attach(mtcars) > plot(mpg,disp) > detach(mtcars)

函数detach()将数据框从搜索路径中移除。

当名称相同的对象不止一个时,这种方法的局限性就很明显了。

> mpg attach(mtcars) The following object is masked _by_ .GlobalEnv: mpg > plot(mpg,wt) Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differ > mpg [1] 25 36 47 > plot(mtcars$mpg,wt)

这里,在数据框mtcars被绑定(attach)之前,我们的环境中已经有了一个名为mpg的对象。 在这种情况下,原始对象将取得优先权,故而报错,这个时候想使用mpg时,便要像最后一段代码示例那般。

除此之外,另一种方式是使用函数with()。你可以这样重写上例:

> with(mtcars,{ + plot(mpg,disp) + })

在这种情况下,大括号{}之间的语句都针对数据框mtcars执行,这样就无须担心名称冲突 了。如果仅有一条语句(例如summary(mpg)),那么大括号{}可以省略。 函数with()的局限性在于,赋值仅在此函数的括号内生效。如:

> with(mtcars,{stats stats 错误: 找不到对象'stats'

如果你需要创建在with()结构以外存在的对象,使用特殊赋值符



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3