最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

R語(yǔ)言的Dataframe常用操作使用

 更新時(shí)間:2021年06月30日 11:33:48   作者:ZhiboZhao  
本文將結(jié)合實(shí)例代碼,介紹R語(yǔ)言的Dataframe常用操作使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

上節(jié)我們簡(jiǎn)單介紹了Dataframe的定義,這節(jié)我們具體來看一下Dataframe的操作

首先,數(shù)據(jù)框的創(chuàng)建函數(shù)為 data.frame( ),參考R語(yǔ)言的幫助文檔,我們來了解一下data.frame( )的具體用法:

Usage
data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())
default.stringsAsFactors()
Arguments
... :these arguments are of either the form value or tag = value. Component names are created based on the tag (if present) or the deparsed argument itself.
row.names :NULL or a single integer or character string specifying a column to be used as row names, or a character or integer vector giving the row names for the data frame.

當(dāng)然,后面還有很多參數(shù)的具體用法,在此不做一一贅述,主要用到的就是前兩個(gè)。首先,“...”代表了表格數(shù)據(jù),就是要構(gòu)成數(shù)據(jù)框的數(shù)據(jù)主體,row.names( )為要構(gòu)成數(shù)據(jù)框的行名,那么既然數(shù)據(jù)框相當(dāng)于R語(yǔ)言的一個(gè)表格,應(yīng)該既有行名也有列名才對(duì),那么列名又是如何給出的呢?我們知道,很多的數(shù)據(jù)處理軟件以及算法是以數(shù)據(jù)的列為單位進(jìn)行的,之前我們構(gòu)建矩陣的時(shí)候,默認(rèn)也是按列填充(byrow=FALSE),而列名在創(chuàng)建數(shù)據(jù)框開始我們就已經(jīng)確定好了的。詳見下面代碼:

我想要?jiǎng)?chuàng)建一個(gè)名為“mydataframe”的數(shù)據(jù)框,首先確定數(shù)據(jù)框里面的列有哪些,然后調(diào)用函數(shù)data.frame( )函數(shù)

> C1 <-c(1,2,3,4)
> C2 <-c(5,6,7,8)
> C3 <-c(9,10,11,12)
> C4 <-c(13,14,15,16)
> C5 <-c(17,18,19,20)
> mydataframe <- data.frame(C1,C2,C3,C4,C5,row.names = c("R1","R2","R3","R4"))
> mydataframe
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20

由此可見,數(shù)據(jù)框是把現(xiàn)有的列拼接成一個(gè)表格的一種數(shù)據(jù)結(jié)構(gòu),細(xì)心的朋友會(huì)發(fā)現(xiàn),這個(gè)數(shù)據(jù)框怎么跟上節(jié)我們講過的矩陣長(zhǎng)得那么一樣?。。≡倩仡櫼幌律瞎?jié)的矩陣創(chuàng)建:

> mydata <- c(1:20)
> cnames <- c("C1","C2","C3","C4","C5")
> rnames <- c("R1","R2","R3","R4")
> myarray <- matrix(mydata,nrow = 4,ncol = 5,dimnames = list(rnames,cnames))
> myarray
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20

確實(shí),從長(zhǎng)相上來說分不出差別,但是矩陣?yán)锩娴脑乇仨氁恢?,而?shù)據(jù)框可以是各種類型數(shù)據(jù)的集合。這種集合不是無(wú)條件亂七八糟的集合,而是以列為單位,不同列的元素類型可以不同,但是同一列的元素類型必須一致。因此,矩陣可以看做特殊的數(shù)據(jù)框類型那么這么做有什么意義呢?在數(shù)據(jù)統(tǒng)計(jì)中,我們需要有各種各樣類型的數(shù)據(jù),就拿簡(jiǎn)單的成績(jī)單來說,就包含了“姓名”,“學(xué)號(hào)”,“科目”等字符型元素,也包括“分?jǐn)?shù)”等數(shù)值型元素,還有“是否通過”等布爾型元素,因此,從廣泛意義上來說,dataframe更具有普適性,矩陣多用在數(shù)學(xué)計(jì)算中。說歸說,我們來實(shí)際創(chuàng)建一個(gè)數(shù)據(jù)框,然后再演示一下它的具體操作:

> names <- c("小明","小紅","小蘭")
> StudentID <- c("2014","2015","2016")
> subjects <- c("英語(yǔ)","英語(yǔ)","英語(yǔ)")
> scores <- c(87,98,93)
> Result <- data.frame(StudentID,names,subjects,scores)
> Result
  StudentID names subjects scores
1      2014  小明     英語(yǔ)     87
2      2015  小紅     英語(yǔ)     98
3      2016  小蘭     英語(yǔ)     93

由上可見,當(dāng)沒有給數(shù)據(jù)框指定行名的時(shí)候,系統(tǒng)會(huì)默認(rèn)從1開始給每行一個(gè)行號(hào),這跟Excel表格有點(diǎn)類似。 還是同往常一樣,我們先學(xué)習(xí)dataframe數(shù)據(jù)類型的基本操作

數(shù)據(jù)框元素的訪問:既然矩陣是特殊的數(shù)據(jù)框,那么矩陣元素的訪問方式應(yīng)該也同樣適用于dataframe嗎?不是這樣,我們知道,數(shù)據(jù)框是以行或者列為單位(行列可以轉(zhuǎn)置),因此訪問元素時(shí)只能整行或者整列訪問。即dataframe[1,](訪問第一行),dataframe[,1](訪問第一列)采用這種方式訪問列時(shí),返回值是按行排列的形式。訪問列同樣也可以直接使用dataframe(1)訪問第一列,或者dataframe(列名)來訪問指定的列。也可以連續(xù)訪問若干列,詳見代碼:

> Result[1,] #訪問第一行
  StudentID names subjects scores
1      2014  小明     英語(yǔ)     87
> Result[,1] #訪問第一列 
[1] 2014 2015 2016
Levels: 2014 2015 2016
> Result[1] #訪問第一列
  StudentID
1      2014
2      2015
3      2016
> Result["names"] #訪問指定標(biāo)號(hào)的列
  names
1  小明
2  小紅
3  小蘭

> Result[1:3,]  #訪問1-3行
  StudentID names subjects scores
1      2014  小明     英語(yǔ)     87
2      2015  小紅     英語(yǔ)     98
3      2016  小蘭     英語(yǔ)     93
> Result[1:3]  #訪問1-3列
  StudentID names subjects
1      2014  小明     英語(yǔ)
2      2015  小紅     英語(yǔ)
3      2016  小蘭     英語(yǔ)
> Result[c(1,3),]  #只訪問1,3行,注意寫法 c( )
  StudentID names subjects scores
1      2014  小明     英語(yǔ)     87
3      2016  小蘭     英語(yǔ)     93
> Result[c(1,4)]  #只訪問1,4列,注意寫法 c( )
  StudentID scores
1      2014     87
2      2015     98
3      2016     93
> Result[c("names","scores")]  #只訪問names和scores列,注意寫法 c( )
  names scores
1  小明     87
2  小紅     98
3  小蘭     93

 由上可得:對(duì)數(shù)據(jù)框操作,必須以向量為單位,使用c( ) or list( ),通過上述了解,我們發(fā)現(xiàn),普通的訪問必須帶著行名和列名,這有的時(shí)候給我們帶來不必要的麻煩,比如我要計(jì)算成績(jī)平均值,帶上列名Score會(huì)給我們帶來一些困惑,于是有哪些方法可以在訪問數(shù)據(jù)庫(kù)元素時(shí)不帶著行名或者列名呢?

方法一:用attach和detach函數(shù),比如要打印所有names,那么可以寫成:

> attach(Result)
The following objects are masked _by_ .GlobalEnv:
    names, scores, StudentID, subjects
The following objects are masked from Result (pos = 3):
    names, scores, StudentID, subjects
> name <- names
> score <-scores
> detach(Result)
> name
[1] "小明" "小紅" "小蘭"
> score
[1] 87 98 93
> mean(score)
[1] 92.66667

方法二:用with函數(shù)

> with(Result,{score <- scores})
> score
[1] 87 98 93

上面談到了dataframe的創(chuàng)建和讀取,如果我需要添加或者刪除某一列該怎么辦呢?

> Result$age<-c(12,14,13)  #添加age列
> Result
  StudentID names subjects scores age
1      2014  小明     英語(yǔ)     87  12
2      2015  小紅     英語(yǔ)     98  14
3      2016  小蘭     英語(yǔ)     93  13
> Result2 <- Result[-2]  #刪除name列
> Result2
  StudentID subjects scores age
1      2014     英語(yǔ)     87  12
2      2015     英語(yǔ)     98  14
3      2016     英語(yǔ)     93  13

 如果我需要查詢成績(jī)等于98的學(xué)生的信息該怎么辦呢?

> Result[which(Result$scores==98),]
  StudentID names subjects scores age
2      2015  小紅     英語(yǔ)     98  14

上面說過了,矩陣和數(shù)據(jù)框也是兩種不同的數(shù)據(jù)類型,我們知道數(shù)據(jù)類型之間可以互相轉(zhuǎn)換,用is.***( )可以判斷某個(gè)變量是否為***類型,用as.***( )則將某個(gè)變量轉(zhuǎn)換為***類型。那么相應(yīng)的,矩陣轉(zhuǎn)換為數(shù)據(jù)框類型則應(yīng)為:

> myarray
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20
> myarrayframe <- as.data.frame(myarray)
> myarrayframe
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20
> is.data.frame(myarray)
[1] FALSE
> is.data.frame(myarrayframe)
[1] TRUE

跟矩陣matrix操作一樣,數(shù)據(jù)框也有rbind和cbind函數(shù),用法大致相同,有興趣的朋友可以簡(jiǎn)單聯(lián)系一下,這里不再贅述。

最后,我們來談一下數(shù)據(jù)框數(shù)據(jù)處理操作:

上面我們講到,利用dataframe[ 列號(hào) ]或者dataframe[ 列值 ]可以讀取數(shù)據(jù)框的某一列,返回值仍為數(shù)據(jù)框類型,但是這部分?jǐn)?shù)據(jù)不方便直接利用我們之前講過的求和,求平均值等方法進(jìn)行計(jì)算分析,因?yàn)樽x取的數(shù)據(jù)帶有“行名/列名”,這個(gè)為字符型變量。有的人會(huì)問,我在創(chuàng)建數(shù)據(jù)框的時(shí)候,不加行名和列名不就行了?第一,在創(chuàng)建數(shù)據(jù)框的時(shí)候,會(huì)默認(rèn)給你分配行名或者列名,第二,就算不分配行名或者列名,那數(shù)據(jù)框創(chuàng)建起來還有什么意義?

> mydataframe
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20
> mydataframe["C4"]
   C4
R1 13
R2 14
R3 15
R4 16
> mean(mydataframe["C4"])
[1] NA
Warning message:
In mean.default(mydataframe["C4"]) : 參數(shù)不是數(shù)值也不是邏輯值:回覆NA
> is.data.frame(mydataframe["C4"])
[1] TRUE

方法一:將數(shù)據(jù)框格式重新轉(zhuǎn)化為矩陣格式,然后按照矩陣索引的方式來找尋要處理的數(shù)據(jù)組,利用矩陣或者向量中相關(guān)函數(shù)來進(jìn)行一定的數(shù)據(jù)處理。

> myarray2 <- as.matrix(mydataframe)
> is.matrix(myarray2)
[1] TRUE
> myarray2
   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20
> x <- myarray[,3] #讀取第3列的值
> x
R1 R2 R3 R4
 9 10 11 12
> is.vector(x) #查看x是否為向量類型
[1] TRUE
> mean(x)
[1] 10.5
> sum(x)
[1] 42

方法二:在讀取數(shù)據(jù)框列的時(shí)候換用另外一種方法,dataframe$(行名或者列名),返回值是vector類型

> c <- mydataframe$C3
> c
[1]  9 10 11 12
> is.vector(c)
[1] TRUE
> mean(c)
[1] 10.5
> sum(c)
[1] 42

同時(shí),也可以利用dataframe$(新的列名) <- 新的向量,來給dataframe添加新的列,具體操作如下:

> mydataframe$sum <- mydataframe$C1 +mydataframe$C4
> mydataframe$mean <- (mydataframe$C1+mydataframe$C4)/2
> mydataframe
   C1 C2 C3 C4 C5 sum mean
R1  1  5  9 13 17  14    7
R2  2  6 10 14 18  16    8
R3  3  7 11 15 19  18    9
R4  4  8 12 16 20  20   10

最推崇的是下一種方法,直接利用transform函數(shù)組建新的數(shù)據(jù)框,具體用法如下:

> x1 <- mydataframe$C1
> x2 <- mydataframe$C3
> mydataframe2 <- transform(mydataframe,sum2=x1+x2,mean2=(x1+x2)/2)
> mydataframe2
   C1 C2 C3 C4 C5 sum mean sum2 mean2
R1  1  5  9 13 17  14    7   10     5
R2  2  6 10 14 18  16    8   12     6
R3  3  7 11 15 19  18    9   14     7
R4  4  8 12 16 20  20   10   16     8

到此這篇關(guān)于R語(yǔ)言的Dataframe常用操作使用的文章就介紹到這了,更多相關(guān)R語(yǔ)言 Dataframe常用操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次

    R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次

    這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語(yǔ)言變量賦值深入講解

    R語(yǔ)言變量賦值深入講解

    這篇文章主要介紹了R語(yǔ)言變量賦值深入講解,內(nèi)容講解的很清晰,有感興趣的可以學(xué)習(xí)下
    2021-03-03
  • R語(yǔ)言 出現(xiàn)矩陣/缺失值的解決方案

    R語(yǔ)言 出現(xiàn)矩陣/缺失值的解決方案

    這篇文章主要介紹了R語(yǔ)言 出現(xiàn)矩陣/缺失值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • R語(yǔ)言 如何保留大于或小于特定數(shù)值的行

    R語(yǔ)言 如何保留大于或小于特定數(shù)值的行

    這篇文章主要介紹了R語(yǔ)言實(shí)現(xiàn)保留大于或小于特定數(shù)值的行操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 用R語(yǔ)言繪制ROC曲線的實(shí)例講解

    用R語(yǔ)言繪制ROC曲線的實(shí)例講解

    這篇文章主要介紹了用R語(yǔ)言繪制ROC曲線的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Rstudio中安裝package出現(xiàn)的問題及解決

    Rstudio中安裝package出現(xiàn)的問題及解決

    這篇文章主要介紹了Rstudio中安裝package出現(xiàn)的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • vscode配置R語(yǔ)言debugger環(huán)境:'vscDebugger"的安裝方法

    vscode配置R語(yǔ)言debugger環(huán)境:'vscDebugger"的安裝方法

    在R中安裝vscDebugger包可以通過兩種方法:第一種是使用Visual Studio Code的命令面板自動(dòng)安裝,操作簡(jiǎn)便,第二種是手動(dòng)在R控制臺(tái)中安裝,這兩種方法都可以有效地安裝vscDebugger包,進(jìn)而幫助用戶在R語(yǔ)言中進(jìn)行代碼調(diào)試,更多詳細(xì)步驟和信息可以參考相關(guān)教程或文章
    2024-10-10
  • R語(yǔ)言 UTF-8各種問題的解決方案

    R語(yǔ)言 UTF-8各種問題的解決方案

    這篇文章主要介紹了R語(yǔ)言 UTF-8各種問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語(yǔ)言中其它對(duì)象知識(shí)點(diǎn)總結(jié)

    R語(yǔ)言中其它對(duì)象知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于R語(yǔ)言中其它對(duì)象知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • R語(yǔ)言入門之安裝R和Rstuido軟件

    R語(yǔ)言入門之安裝R和Rstuido軟件

    這篇文章主要介紹了R語(yǔ)言入門之安裝R和Rstuido軟件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

台北市| 县级市| 棋牌| 那坡县| 泉州市| 千阳县| 庐江县| 龙岩市| 通山县| 易门县| 南雄市| 来安县| 星座| 凤冈县| 美姑县| 乐业县| 平湖市| 昆山市| 和顺县| 黔南| 荔浦县| 嘉鱼县| 鹿邑县| 称多县| 禄丰县| 安塞县| 万州区| 海淀区| 婺源县| 华宁县| 青浦区| 盖州市| 衡南县| 宝清县| 汨罗市| 体育| 兴业县| 黔南| 新余市| 平定县| 新建县|