vlambda博客
学习文章列表

R语言实战——1.2创建数据集(一)

点击蓝字


这篇推送将介绍如何用R创建数据集,话不多说,直接开搞!

创建数据集

01

数据集的概念

       R中有许多用于存储数据的结构,包括标量、向量、数组、数据框和列表。R可以处理的数据类型(模式)包括数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)。R将实例标识符称为rownames(行名),将类别型(包括名义型和有序型)变量称为因子(factors)。

02

数据结构

向量

       向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量。


a <- c(1, 2, 5, 3, 6, -2, 4)

b <- c("one", "two", "three")

c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)



       a是数值型向量,b是字符型向量,而c是逻辑型向量。注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。

       访问向量中的单个元素,a[元素位置]。元素在向量中的位置从1开始计。访问向量中的多个元素,a[元素位置1,元素位置2,......]或a[元素位置1:元素位置2]。

矩阵

       矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵。


myymatrix <- matrix(vector,

nrow=number_of_rows, ncol=number_of_columns,

byrow=logical_value, 

dimnames=list(char_vector_rownames, char_vector_colnames))


vector处可以数据范围、手动输入、已经输入数据的变量表示。

nrow=输入行数, ncol=输入列数

byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认按列填充。

dimnames包含了可选的、以字符型向量表示的行名和列名。

可以使用下标和方括号来选择矩阵中的行、列或元素。X[i,]指矩阵X中的第i行,X[,j]指第j列,X[i, j]指第 i 行第 j 个元素。

数组

数组与矩阵类似,但是维度可以大于2。数组可通过array函数创建。


myarray <- array(vector, dimensions, dimnames)


vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。

示例:

数据框

      由于数据有多种模式,无法将此数据集放入一个矩阵。在这种情况下,使用数据框是最佳选择。数据框可通过函数data.frame()创建。


mydata <- data.frame(col1, col2, col3,...)


      此时,mydata就表示一个数据框。列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。

访问数据框的元素,用mydata[数据集1的位置,数据集2的位置,......]或mydata[c("数据集1的名称","数据集2的名称",......]或mydata$数据集名称。

若想生成某两个变量的列联表可以输入下列命令


> table(mydaya$数据集1名称, mydata$数据集2名称)


      为减少输入mydata的次数,可以使用attach() detach() with()命令。


attach(mydata)
   summary(数据集1)
   plot(数据集1, 数据集2)

detach(mydata)

with(mydata, {
   print(summary(数据集1))
   plot(数据集1,数据集2)

})


      即,描述性统计用数据框中的数据集1,并绘制数据集1和数据集2的散点图。函数with()的局限性在于,赋值仅在此函数的括号内生效。如果需要创建在with()结构以外存在的对象,在with()结构中使用特殊赋值符<<-替代标准赋值符(<-)即可,它可将对象保存到with()之外的全局环境中。

因子

       类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor),函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k],同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。

如:语句diabetes <- factor(diabetes)将此向量存储为(1, 2, 1, 1),并在内部将其关联为1=Type1和2=Type2(具体赋值根据字母顺序而定,当按字母顺序赋值不符合逻辑时,可以通过指定levels选项来覆盖默认排序)。


数据集 <-factor(数据集, order=TRUE,
levels=c("字符向量1", "字符向量2", "字符向量3"))


数值型变量可以用levels和labels参数来编码成因子。如果男性被编码成1,女性被编码成2,则以下语句:

sex <- factor(sex, levels=c(1, 2), labels=c("Male", "Female"))

列表

       列表是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下,可以为列表中的对象命名。


mylist <- list(object1, object2, ...)

mylist <- list(name1=object1, name2=object2, ...)

我知道你  在看  哦