1. 程式人生 > >R語言中的資料集

R語言中的資料集

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中物件處理