电竞比分网-中国电竞赛事及体育赛事平台

分享

R語言快速入門:數(shù)據(jù)結(jié)構(gòu) 生成數(shù)據(jù) 數(shù)據(jù)引用 讀取外部數(shù)據(jù)

 西北望msm66g9f 2019-08-31
目錄
1 數(shù)據(jù)結(jié)構(gòu)

1.1 向量

1.2 矩陣

1.3 數(shù)據(jù)框

2 生成數(shù)據(jù)

2.1 c() 連接單個數(shù)據(jù)

2.2 ':' 生成1/-1等差向量

2.3 seq() 生成等距向量

2.4 rep() 生成重復(fù)數(shù)據(jù)

3 數(shù)據(jù)引用

3.1 引用行/引用列

3.2 引用單個元素

3.3 引用子矩陣

3.4 變量名引用

4 讀取外部數(shù)據(jù)(表)

4.1 更改工作目錄

4.2 read.table

4.3 read.csv


正文

1 數(shù)據(jù)結(jié)構(gòu)

本節(jié)主要講向量、矩陣、數(shù)據(jù)框三種數(shù)據(jù)結(jié)構(gòu)(入門必須學(xué))

1.1 向量

用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組,常用'c()'創(chuàng)建。例如:
> c(1,2,8)#生成包含1,2,8的一維數(shù)組(向量)[1] 1 2 8

1.2 矩陣

二維數(shù)組具有行列的概念
#矩陣用法matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL#表示生成1行,1列的一個矩陣,其中僅僅包含一個元素“NA”
#---示例---#> matrix(c(1,2,311,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c('row1''row2'), c('C.1''C.2''C.3'))) C.1 C.2 C.3row1 1 2 3row2  11  12  13#nrow = 2和ncol = 3 定義2x3的2行3列矩陣#byrow = TRUE 是控制矩陣中的數(shù)據(jù)c(1,2,3, 11,12,13)按照行的順序排列,默認(rèn)按照列排列#dimnames = list(c('row1', 'row2'), c('C.1', 'C.2', 'C.3')) 定義矩陣行名和列名

1.3 數(shù)據(jù)框

主要用于向量/矩陣合并,可以將不通類型的以向量以及矩陣,按照一定結(jié)構(gòu)存儲在數(shù)據(jù)框中。
> x <- c(11:20)  #其中' <- '是賦值的意思,將向量c(11:20)賦值給對象x> y <- c(1:10)> data.frame(xf = x, yf = x) #將向量x和y合并存儲到數(shù)據(jù)框中,并重命名為xf和yf xf yf1 11 112 12 123 13 134 14 145 15 156 16 167 17 178 18 189 19 1910 20 20
數(shù)組與矩陣類似,但其維度大于2.由于R入門基本接觸不到3維以上數(shù)組的概念,目前暫不展開,等入門后在反過來看。

2 生成數(shù)據(jù)

本節(jié)主要講“c()”、':'、seq、rep等四種數(shù)據(jù)生成的內(nèi)容(入門必須學(xué))

2.1 “c”  連接單個數(shù)據(jù)

> c(1,2,8)#生成包含1,2,8的向量

2.2 “:“ 生成1/-1等差向量

> 1.1:10[1] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1> 1:10 [1] 1 2 3 4 5 6 7 8 9 10> 10:1 #如x=1:10(遞減,如y=10:1) [1] 10 9 8 7 6 5 4 3 2 1

2.3 seq 生成等距向量

①seq(起點,終點,步長); 
②seq(length=9, from=1, to=5)
> seq(1,10,2)[1] 1 3 5 7 9> seq(length=5,1,10)[1] 1.00 3.25 5.50 7.75 10.00
#seq(x)相當(dāng)于1:length(x);length(x)為0時,返回integer(0)> seq(10) [1] 1 2 3 4 5 6 7 8 9 10> seq(c())integer(0)

2.4 rep(x,n)   重復(fù) 

將x重復(fù)n次,可使用each限定為依次重復(fù)形式
rep(1:3,3)rep(1:3,each=3)
#> rep(1:3,3)#[1] 1 2 3 1 2 3 1 2 3#> rep(1:3,each = 3)#[1] 1 1 1 2 2 2 3 3 3
額外補充:R語言|第2講:生成數(shù)據(jù)


3 數(shù)據(jù)引用(以矩陣為例)

數(shù)據(jù)引用必須懂“對指定維度數(shù)據(jù)的引用”
(以二維矩陣為例)

3.1 行引用/列引用

例如:引用第一行數(shù)據(jù),引用第一列數(shù)據(jù),引用第一行第一列的數(shù)據(jù)。
> data(iris) #鳶尾花數(shù)據(jù)集> dim(iris) #讀取iris數(shù)據(jù)集的維度數(shù)值,以“行數(shù) 列數(shù) ”形式展示[1] 150   5   #說明iris數(shù)據(jù)集是150 x 5的二維數(shù)組

3.2 行列值引用:數(shù)據(jù)集[行值,列值]

如行值或列值僅1個數(shù)字,表示僅引用該行或列的數(shù)據(jù)
iris[1,]  #引用第1行數(shù)據(jù) Sepal.Length Sepal.Width Petal.Length Petal.Width Species1          5.1         3.5          1.4         0.2  setosa
head(iris[,1],5) #引用第1列的數(shù)據(jù),其中因數(shù)據(jù)過長,使用head()函數(shù)取前5個數(shù)字[1] 5.1 4.9 4.7 4.6 5.0

3.3 引用子矩陣

如行值或列值為組合數(shù)據(jù),則表示引用組合行列交叉位置的數(shù)據(jù)
> iris[1:5,1:3] Sepal.Length Sepal.Width Petal.Length1 5.1 3.5 1.42 4.9 3.0 1.43 4.7 3.2 1.34 4.6 3.1 1.55 5.0 3.6 1.4

3.4 變量名引用

(多用于二維數(shù)組中):數(shù)據(jù)集$變量名
> head(iris$Petal.Length,5)[1] 1.4 1.4 1.3 1.5 1.4

4 讀取外部數(shù)據(jù)(以.csv表為例)

本節(jié)主要講如何讀取外部數(shù)據(jù)(表)

(以.csv表為例)


4.1 設(shè)置工作目錄

R語言中數(shù)據(jù)的輸入需要設(shè)置數(shù)據(jù)讀取的路徑,一般將數(shù)據(jù)文件放到工作目錄下,這樣直接就可以通過read.table等讀取數(shù)據(jù)文檔(不許要設(shè)置路徑)。
方法一:setwd()
setwd('E:/')  #設(shè)置當(dāng)前工作目錄為'E:/'
getwd()  #讀取當(dāng)前工作空間的工作目錄(文件讀取保存路徑)
> getwd()  #讀取當(dāng)前工作空間的工作目錄(文件讀取保存路徑)[1] 'C:/Users/ysl/Documents'> setwd('E:/') #設(shè)置當(dāng)前工作目錄為'E:/'> getwd() #再次使用getwd()函數(shù)即可查看是否設(shè)置成功[1] 'E:/'
方法二:通過R-gui菜單欄設(shè)置(文件-改變工作目錄)

4.2 read.table() 

#讀取帶分隔符的文本文件。read.table()函數(shù)是R最基本函數(shù)之一,讀取帶分隔符的文本/表格文件。
#Usageread.table(file, header = FALSE, sep = '', quote = '\''', dec = '.', numerals = c('allow.loss', 'warn.loss', 'no.loss'), row.names, col.names, as.is = !stringsAsFactors, na.strings = 'NA', colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = '#', allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = '', encoding = 'unknown', text, skipNul = FALSE)read.csv(file, header = TRUE, sep = ',', quote = '\'',dec = '.', fill = TRUE, comment.char = '', ...)
read.csv2(file, header = TRUE, sep = ';', quote = '\'',dec = ',', fill = TRUE, comment.char = '', ...)
read.delim(file, header = TRUE, sep = '\t', quote = '\'',dec = '.', fill = TRUE, comment.char = '', ...)
read.delim2(file, header = TRUE, sep = '\t', quote = '\'',            dec = ',', fill = TRUE, comment.char = '', ...)
常用參數(shù)的說明如下:
(1)file:file是一個帶分隔符的ASCII文本文件。①絕對路徑或者相對路徑。一定要注意,在R語言中\(zhòng)是轉(zhuǎn)義符,所以路徑分隔符需要寫成'\\'或者“/”。所以寫成“C:\\myfile\\myfile.txt”或者“C:/myfile/myfile.txt”即可。②使用file.choose(),彈出對話框,自動選擇文件位置。例如:read.table(file.choose(),...)。
(2)header:一個表示文件是否在第一行包含了變量的邏輯型變量。如果header設(shè)置為TRUE,則要求第一行要比數(shù)據(jù)列的數(shù)量少一列。
(3)sep分開數(shù)據(jù)的分隔符。默認(rèn)sep=''。read.table()函數(shù)可以將1個或多個空格、tab制表符、換行符或回車符作為分隔符。常見空白分隔符有:空格,制表符,換行符
sep=” ”;sep = “\t”;sep = “\n”
(4)stringsAsFactors 邏輯值,標(biāo)記字符向量是否需要轉(zhuǎn)化為因子,默認(rèn)是TRUE。stringsAsFactors = F意味著,“在讀入數(shù)據(jù)時,遇到字符串之后,不將其轉(zhuǎn)換為factors,仍然保留為字符串格式”。
(5)encoding 設(shè)定輸入字符串的編碼方式。
#讀取txt文檔
> df<- read.table('data.txt')> dfV1 V21 x y2 1 23 3 44 5 6> df <- read.table('data.txt',header = T)> dfx y1 1 22 3 43 5 6

#樣式1:直接讀取數(shù)據(jù)
> df <- read.table('data.csv') #直接讀取數(shù)據(jù)> head(df)V11 ID,Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species2 1,5.1,3.5,1.4,0.2,setosa3 2,4.9,3,1.4,0.2,setosa4 3,4.7,3.2,1.3,0.2,setosa5 4,4.6,3.1,1.5,0.2,setosa6 5,5,3.6,1.4,0.2,setosa

#樣式2:讀數(shù)+首行表頭
> df <- read.table('data.csv',header = T)  #讀數(shù)+首行表頭> head(df)ID.Sepal.Length.Sepal.Width.Petal.Length.Petal.Width.Species1 1,5.1,3.5,1.4,0.2,setosa2 2,4.9,3,1.4,0.2,setosa3 3,4.7,3.2,1.3,0.2,setosa4 4,4.6,3.1,1.5,0.2,setosa5 5,5,3.6,1.4,0.2,setosa6 6,5.4,3.9,1.7,0.4,setosa
#樣式3:讀數(shù)+首行表頭+','逗號分割
> df <- read.table('data.csv',header = T,sep=',')  #讀數(shù)+首行表頭+','逗號分割> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6 6 5.4 3.9 1.7 0.4 setosa> summary(df)ID Sepal.Length Sepal.Width Petal.Length Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 Median : 75.50 Median :5.800 Median :3.000 Median :4.350 Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900 Petal.Width Species Min. :0.100 setosa :50 1st Qu.:0.300 versicolor:50 Median :1.300 virginica :50 Mean :1.199 3rd Qu.:1.800 Max. :2.500
#樣式4:讀數(shù)+首行表頭+','逗號分割+字符轉(zhuǎn)因子factor
> df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)##讀數(shù)+首行表頭+','逗號分割+字符轉(zhuǎn)因子factor> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6 6 5.4 3.9 1.7 0.4 setosa
#請注意species結(jié)果與樣式3中結(jié)果的差異> summary(df) ID Sepal.Length Sepal.Width Petal.Length Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 Median : 75.50 Median :5.800 Median :3.000 Median :4.350 Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900 Petal.Width Species Min. :0.100 setosa :50 1st Qu.:0.300 versicolor:50 Median :1.300 virginica :50 Mean :1.199 3rd Qu.:1.800  Max.   :2.500  

4.3 read.csv()  

#讀取.csv格式數(shù)據(jù),read.table的一種特定應(yīng)用。read.csv() 讀取逗號分割數(shù)據(jù)文件,read.table()的一種特定應(yīng)用。默認(rèn)逗號分割,header=T,stringsAsFactor = T
df <- read.csv('data.csv') #等價與下df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)#第一行和第二行等價
read.csv(file, header = TRUE, sep = ',', quote = '\'', dec = '.', fill = TRUE, comment.char = '', ...)
#實例> df <- read.csv('data.csv') #相當(dāng)于df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6  6          5.4         3.9          1.7         0.4  setosa

喜歡你就轉(zhuǎn)發(fā)一下吧

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多