R語言實戰筆記 第二章 資料型別及結構

2021-07-25 07:04:11 字數 3698 閱讀 9205

標籤(空格分隔): r語言

本章的內容其實很少,很多都是需要用到的時候才會去找的東西,個人認為本章主要掌握以下兩點:

資料結構、資料輸入

重點中的重點,一切的處理都是針對資料的,沒有資料就沒有後續的一切

下面先介紹概念

首先介紹一下資料型別,有數值型,字元型,邏輯型,複數型(虛數),原生型(位元組),各個型別不詳細解釋,另外,還有你需要分別告訴r:例項識別符號是哪個(rownames,行名),名義型變數和有序型變數是哪個(factors,因子)。

然後才是資料結構

標量、向量、矩陣、陣列、資料框和列表。

標量

只含有乙個元素的向量,比如a<-3,g<-「u」,b<-true,它們用於儲存常量,即只有乙個數值。

向量

其實就是一維陣列,使用函式c()來組合向量各個元素,比如「a<-c(1,2,3,4,5)」,或者b<-c(「one」,」two」,」three」)等等,可以使用方括號來訪問向量中的元素,如a[c(2,4)]就得到上面的2和4兩個數字a[1:3]就能得到1,2,3三個數字,冒號在這裡的意思是從左邊的數到右邊的數,即從1到3,它能生成乙個數值串行。注意的是,乙個向量只能有乙個資料型別

矩陣

其實就是乙個二維陣列,使用matrix進行建立,方法是

> mymatrix<-matrix(vector,nrow=行數,ncol=列數,byrow=t/f,dimnames=list(行名,列名))

其中需要解釋一下的可能是byrow這個,它的意思就是按行放置還是按列,比如有乙個2x2的四格,你在上面放入1-4這4個數字,你是橫著填,即[1

324]

還是豎著填,即[1

234]

,true就是橫著填,動手敲一次知道了~,行名和列名這兩上使用c()函式合併填入即可,注意順序。矩陣元素的獲取使用a[i,j]來獲取,省略即為整行/列提取,可以使用c()函式單獨提取某幾個行/列。

陣列

這玩意可不是很好理解,我試著解釋一下吧,它類似乙個層次結構,維度大概就是一層一層的包含關係,拿矩陣來說,把幾個矩陣合在一起,就是乙個3維陣列,把幾個3維陣列合在一起,就是乙個4維陣列,形象的來說,就是excel,我們都知道,excel裡面有工作表,每個工作表都看作乙個矩陣,那麼,乙個工作簿有n個表,對於這個工作簿來說,它就是乙個三維陣列,然後有乙個資料夾放著很多個工作簿,對這個資料夾來說,就是乙個4維陣列,不知道這樣說能明白不。不明白就自己想像去吧,我目前只能解釋到這個程度了。

建立方法:arr<-array(vector,dimensions,dimnames=list(c(vetor),c(vetor)……)),這個建立方法呢,和矩陣一毛一樣的,只不過,它把nrow和ncol放在了dimensions裡面了,並且把它擴充套件開來,從第1維(行)到第2維(列)到第n維(第幾個資料夾)用c()函式定義它們的個數,dimnames是可靠引數,用來定義前面定義維度的標籤。

提取元素方式,同樣為方括號下標方式提取,如a[1,2,3,4,5],選擇第5個維度的第5個類別,第4個維度的第4個類別,第3個維度的第3個類別,第2個維度的第2個類別,第1個維度的第1個類別下的元素!如果選取的是多個資料,最終顯示為第1,2個維度的矩陣,然後在上頭顯示維度分類~自己試~

資料框

excel**,要求每一列必須保持相同資料型別!但不要求全部列都用一樣的資料型別,這點和矩陣的要求不同。解釋完畢,不懂excel的自己去看去。

建立方法是df<-data.frame(col1,col2,col3……),col1可以使用col1<-c(1,2,3)先行賦值,此時會使用col1為列名,如果不先行賦值,它會起乙個讓你蛋疼的列名出來,雖然起得不錯,但很長。。。很長。。。很長。。。

資料框的資料選取,和矩陣一毛一樣~還多了幾種方法,如列名**,同樣呼叫方括號,但裡面可以不一樣了a[c(「col1」,」col2」)]其中col1,col2是列名,也可以使用a$col1這樣子來把整列都抽出來。實際使用裡,是不可能讓你使用a這樣的名稱的,一定要使用一看就能知道含義的名稱,比如the_brand_of_supperman_red_briefs之類,這個時候,每次提取,都要敲這麼長,卒~

還好,有attach(),detach()和with()三個函式來幫忙,簡單說一下,attach()和detach()是一對,新增了就要刪除,別問為什麼~它就是可以把超人紅**的牌子資料框下面每個變數(字段)都放到外面,能讓你不需要輸入前面長長的名字就可以使用。with()也一樣,注意的是,使用attach(「object_name」)有時候會返回一些被masked的變數,這個是什麼呢,就是同名變數,在attach之前就有了的,和你資料框的變數名一樣的,此時,資料框內的同名變數就不能使用。注意,是資料框內的變數不能使用,而不是預先定義那個不能使用。

with()這個函式好,with(object_name,)這樣的格式來執行,所有的一切都只在裡面執行,離開了括號之外就不認帳了,像銀行~當然,可以使用特殊技能」<<-「來賦值乙個全域性物件,就可以外面使用了,你的辦銀行卡一般都是全域性物件來的,不是全域性,你也不會去辦是不~

下面來說說上面所提到的例項識別符號和因子,或者我應該看完這本書之後再回頭來寫總結~

例項識別符號,解釋為行名,在data.frame()裡面加入row.names=c(***x)/col1(或某一列的內容) 來定義行名。這個很好理解。

因子,先說一下名義型和有序型是什麼鬼,名義型,就是張三,李四,王五這些名字,它們之間是平等的,不分先後的;有序型,就是張三是李四的兒子,李四是王五的兒子(不管他為什麼姓不一樣,這些細節不重要),於是,它們就有了個順序,無論從小到大,還是從大到小,都是有順序的,這個時候,他們就是有序型。名義型和有序型統稱因子。建立名義型因子的時候使用f<-factor(c(「t1」,」t2」,」t3」,」t1」)),於是就會自動把它儲存為(1,2,3,1)這樣的向量,並且會在內部把1對應」t1」,2對應」t2」,3對應」t3」。要表示它是有序型的,就需要再加入「ordered=true,levels=c(「t1」,」t2」,」t3」)」引數,如果不指定levels的話,就會按字母順序1234逐個打上去,如果指定了levels的話,就一定要全面,缺少了乙個,都會被r當成缺失值處理掉。

列表

大雜匯,可以把上頭所說的所有資料結構放到一起,用乙個標籤打上標記,就可以使用了。注意的是,它使用雙重方括號來引用標籤,後面再加乙個方括號來引用標籤內的資料結構,比如mylist裡面的有「標量」,「向量」,「矩陣」三個標籤,分別存放對應的結構,那麼引用的時候,使用mylist[[1]]或者mylist[[「標量」]]就可以得到這個標量的值,使用mylist[[3]]就可以顯示矩陣,使用mylist[[3]][2,3]就可以顯示矩陣裡面2行3列的是什麼鬼~

這個,嗯,這個不用太在意,簡單來說,兩個命令,一是names,用於改變變數(字段)的名稱,二是labels,用於在factor裡面,改變levels的名稱,比如有個gender的變數(內容是c(1,1,2,2,3)),1表示男,2表示女,3是人妖,你可以使用factor(df$gender,levels=c(1,2),labels=c(「女」,」男」)),嗯,就這樣,它的內容就會變成了c(「女」,」女」,」男」,」男」,)~

後記:這一章都是概念,其實也很好理解,逐漸對r的結構和定義都些了解了,使用起來也沒剛接觸那時候那麼陌生了。繼續,後面看多兩章再來寫總結吧,感覺那樣子寫起來會更全面。但也可能多了一些不應該在這個階段出現的概念。造成混亂。

第二章 資料型別

1byte 8bit 1kb 1024byte 1mb 1024kb 1gb 1024mb 1tb 1024gb intfloat 用float計算精度會不準確,需要匯入decimal模組 strbool true,false int 可以將整數型的str和float,bool轉換成int str ...

C語言學習筆記第二章資料型別

就是在 c 程式中的單詞 define price 30 void main 型別說明符 數的範圍 位元組數int 有符號 216 216 4byte 32bit unsigned int 無符號 0 232 short int unsigned short int long int unsigne...

Python第二章資料型別

基本資料型別 python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值 以後該變數才會被建立。python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。等號 用來給變數賦值。等號 運算子左邊是乙個變數名,等號 運算子右邊是儲存在變數中的值。例如 x ...