與R初相識:R的數據結構與EXCEL數據導入

根據制定的學習計劃, 完成了《R語言實戰》第二章的學習,對R語言的數據結構及外部數據導入等有了一定了解,但是看完之後覺得缺少一些實踐,一些函數命令記不清楚。寫這個是將學到的一些知識列舉出來,算是鞏固吧。

  1. 學習內容

    《R語言實戰》第二章

    猴子的知乎live

  2. R語言數據結構

  • 向量,用c定義

> #姓名n> name<-c("王大","王二","王三","王四","王五")n> #顯示輸入數據n> namen[1] "王大" "王二" "王三" "王四" "王五"n> #向量長度n> length(name)n[1] 5n> #通過在方括弧中給定元素所處位置得到其數據n> name[2]n[1] "王二"n

  • 矩陣,用matrix定義,matrix(vector,nrow=5,ncol=5,byrow=TRUE,dimnames=list(rnames,cnames));

> #矩陣里的元素n> data<-(1:25);n> #行名n> rnames<-c("row1","row2","row3","row4","row5");n> #列名n> cnames<-c("col1","col2","col3","col4","col5");n> #矩陣n> a<-matrix(data=data,nrow=5,ncol=5,byrow=TRUE,dimnames=list(rnames,cnames));n> #顯示矩陣n> an col1 col2 col3 col4 col5nrow1 1 2 3 4 5nrow2 6 7 8 9 10nrow3 11 12 13 14 15nrow4 16 17 18 19 20nrow5 21 22 23 24 25n> #獲取矩陣第3行並顯示n> row3<-a[3,];n> row3ncol1 col2 col3 col4 col5 n 11 12 13 14 15 n> #獲取矩陣第4行,第5列的數據,並顯示n> a45<-a[4,5]n> a45n[1] 20n

  • 數組,用array定義,array(vector,dimensions,dimnames);目前還不太理解這種數據結構有哪些比較好用的地方

> #定義一個3維數組n> #數組中的元素n> data<-(1:24);n> #每個維度的名稱n> dim1<-c("維度11","維度12")n> dim2<-c("維度21","維度22","維度23")n> dim3<-c("維度31","維度32","維度33","維度34")n> #定義數組n> b<-array(data=data,c(2,3,4),dimnames = list(dim1,dim2,dim3));n> bn, , 維度31nn 維度21 維度22 維度23n維度11 1 3 5n維度12 2 4 6nn, , 維度32nn 維度21 維度22 維度23n維度11 7 9 11n維度12 8 10 12nn, , 維度33nn 維度21 維度22 維度23n維度11 13 15 17n維度12 14 16 18nn, , 維度34nn 維度21 維度22 維度23n維度11 19 21 23n維度12 20 22 24n

  • 數據框,用data.frame定義。data.frame(col1,col2,col3,...);數據框是R中最常處理的數據結構,和我們平時多接觸到的數據方式也比較一致

> #創建數據框:病例數據n> #病人編號n> patienID<-c(1,2,3,4);n> #姓名n> name<-c("趙大","錢二","孫三","李四");n> #病人年齡n> age<-c(29,34,28,52);n> #糖尿病類型n> diabetes<-c("1型糖尿病","2型糖尿病","1型糖尿病","2型糖尿病");n> #病情n> status<-c("較差","好轉","顯著好轉","較差")n> #創建數據框並顯示n> patientdata<-data.frame(patienID,name,age,diabetes,status,stringsAsFactors = FALSE);n> patientdatan patienID name age diabetes statusn1 1 趙大 29 1型糖尿病 較差n2 2 錢二 34 2型糖尿病 好轉n3 3 孫三 28 1型糖尿病 顯著好轉n4 4 李四 52 2型糖尿病 較差n> #通過$和列名來選取數據框中的某一列n> age1<-patientdata$agen> age1n[1] 29 34 28 52n> #選取數據框中的某幾列n> subdata<-patientdata[c("diabetes","status")]n> subdatan diabetes statusn1 1型糖尿病 較差n2 2型糖尿病 好轉n3 1型糖尿病 顯著好轉n4 2型糖尿病 較差n> #統計數據框有多少行n> patientNUMBER<-nrow(patientdata)n> patientNUMBERn[1] 4n> #患有1型糖尿病的有多少人n> type1<-patientdata[patientdata$diabetes=="1型糖尿病",]n> type1n patienID name age diabetes statusn1 1 趙大 29 1型糖尿病 較差n3 3 孫三 28 1型糖尿病 顯著好轉n> nrow(type1)n[1] 2n

  • 列表,用list表示,c<-list(obj1,obj2,obj3,...)

R中數據導入表格數據,試了3種方法

xlsx另存為csv格式再導入,如下

> #導入數據n> mydata<-read.table("123.csv",header = TRUE,row.names = "病人編號",sep=",")n> mydatan 姓名 年齡 糖尿病類型 病情 病情.1n1 猴子 29 1型糖尿病 較差 Poorn2 李同 34 2型糖尿病 好轉 Improvedn3 王五 28 1型糖尿病 顯著好轉 Excellentn4 張三 52 2型糖尿病 較差 Poorn> #總共多少病人n> nrow(mydata)n[1] 4n> #1型糖尿病有多少人n> type1<-mydata[mydata$糖尿病類型=="1型糖尿病",]n> type1n 姓名 年齡 糖尿病類型 病情 病情.1n1 猴子 29 1型糖尿病 較差 Poorn3 王五 28 1型糖尿病 顯著好轉 Excellentn> nrow(type1)n[1] 2n

xlsx中的數據複製到剪切板中,如下:

> read.table("clipboard",header=T)n 病人編號 姓名 年齡 糖尿病類型 病情 病情.1n1 1 猴子 29 1型糖尿病 較差 Poorn2 2 李同 34 2型糖尿病 好轉 Improvedn3 3 王五 28 1型糖尿病 顯著好轉 Excellentn4 4 張三 52 2型糖尿病 較差 Poorn

使用readxl程序包,如下:

> read_excel("12.xlsx")n# A tibble: 4 x 6n 病人編號 姓名 年齡 糖尿病類型 病情 病情__1n <dbl> <chr> <dbl> <chr> <chr> <chr>n1 1 猴子 29 1型糖尿病 較差 Poorn2 2 李同 34 2型糖尿病 好轉 Improvedn3 3 王五 28 1型糖尿病 顯著好轉 Excellentn4 4 張三 52 2型糖尿病 較差 Poorn

不知道為什麼使用這個導入的時候會出現 <dbl> <chr> <dbl> <chr> <chr> <chr>這麼一行,看著像是表示此列的變數類型,還未找到消除的辦法。。。。

寫命令的時候發現R有新版本了,使用此方法升級比較簡單,能升級到最新版

install.packages("installr")nlibrary(installr)nupdateR()n

總結:

自己嘗試寫命令的時候,一些命令記不太清楚,還需要多加練習!


推薦閱讀:

Tidy data(整理數據)---Hadley Wickham
東易日盛:技術與數據,驅動傳統家裝行業效率和用戶體驗提升
關於數據分析學習筆記的計劃(以及目錄)
如何搭建一個指標體系

TAG:R编程语言 | 数据分析 |