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, ...)
我知道你 在看 哦