R语言中的数据存储形式主要有以下几种方式
数组,向量,矩阵,数据框,列表
R语言中的可以处理的数据类型有以下几种方式
数值类型,字符类型,逻辑类型,原声类型(二进制类型),复数类型
数值类型 包括 实例标示,日期类型
字符类型 包括 标称变量,序数变量
R语言针对不同的数据类型处理的方式是不同的
一、向量(每一个向量中的元素都是相同的数据类型)
a <- c(1, 2, 5, 3, 6, -2, 4) 整数类型
b <- c("one", "two", "three") 字符类型
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) boolean类型
向量的下标从1开始
以下是几种对于向量的操作
a[1] 访问第一个元素 a[c(2,4)]访问向量a的第2个和第4个元素
a[3]
a[c(1, 3, 5)]
a[2:6]
二、矩阵(是一个二维的数据,元素都具有相同的数据类型)
以下是几个简单创建矩阵的例子
y <- matrix(1:20, nrow = 5, ncol = 4)
y显示的结果如下
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
cells <- c(1, 26, 24, 68)
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = TRUE,
dimnames = list(rnames, cnames))
结果如下
C1 C2
R1 1 26
R2 24 68
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = FALSE,
dimnames = list(rnames, cnames))
结果如下:
C1 C2
R1 1 24
R2 26 68
如何访问矩阵中的元素
x <- matrix(1:10, nrow = 2)
x
x[2, ]
x[, 2]
x[1, 4]
x[1, c(4, 5)]
三、数组(三维以上的数据用数组,数组中的元素是相同的数据类型)
创建数据的基本的原型函数
myarray <- array(vector,dimensions,dimnames) // 数据源,向量表示维度下标的最大值,名称
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2, 3, 4), dimnames = list(dim1,
dim2, dim3))
z
四、数据框(dataframe,可以有不同的数据类型)
创建数据框的一般的函数
mydata <- data.frame(col1,col2,col3,col4,...,row.names=col1)
我们将病人的数据,以数据框的形式加载到数据框中
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes,
status)
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]
patientdata[c("diabetes", "status")]
patientdata$age
可以使用attach(数据框)detach(数据框)来减少 数据框$的使用
例如
summary(mtcars$mpg)
plot(mtcars$mpg,mtcars$wt)
另外一种方式就是
attach(mtcars)
summary(mpg)
plot(mpg,wt)
detach(mtcars)
或者使用with方式
with(mtcars,{
summary(mpg)
plot(mpg,wt)
})
{}中的都是针对mtcars数据集的操作
在病人数据中的Diabetes和Status是标称属性和序数属性,都是字符类型的,可以使用factor(col)将字符类型变成数值类型
col <- factor(col) //将标称类型变成数值类型,没有顺序
col <- factor(col,order=true) //将序数类型变成数值类型,有顺序,按照值得字母的顺序排序
col <- factor(col,order=true,levels=c("","",""))
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
diabetes <- factor(diabetes)
status <- factor(status, order = TRUE)
patientdata <- data.frame(patientID, age, diabetes,
status)
str(patientdata)
summary(patientdata)
五、列表(list,列表中的元素可以是向量,矩阵,数组,数据框,列表)
mylist<- list(object1,object2,object3)
g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow = 5)
k <- c("one", "two", "three")
mylist <- list(title = g, ages = h, j, k)
mylist
mylist[[3]][,1]
如何对以上5中对象处理