Day5-數據結構筆記。
新手起步:
抄筆記:
獲取示例數據:在公眾號--生信星球 后臺回復:“數據類型”即可獲得
(1)R的賦值符號不是等號叁鉴,而是<-
(2)在Console 控制臺輸入命令,相當于Linux的命令行
(3)R的代碼都是帶括號的江醇,括號必須是英文的濒憋。
(4)顯示工作路徑getwd()
(5)向量是由元素組成的,元素可以是數字或者字符串陶夜。
(6)表格在R語言中改名叫“數據框”
(7)別只復制代碼凛驮,要理解其中的命令、函數的意思条辟。函數或者命令不會用時黔夭,除了百度/谷歌搜索以外,用這個命令查看幫助:?read.table
羽嫡,調出對應的幫助文檔本姥,翻到example部分研究一下。
(8)數據類型(重點只有兩個厂僧,剩下的不看)
數據結構
思維導圖:
抄筆記:
獲取示例數據:在公眾號后臺回復:“數據類型”即可獲得
(1)R的賦值符號不是等號扣草,而是<-
(2)在Console 控制臺輸入命令,相當于Linux的命令行
(3)R的代碼都是帶括號的颜屠,括號必須是英文的辰妙。
(4)顯示工作路徑 getwd()
(5)向量是由元素組成的,元素可以是數字或者字符串甫窟。
(6)表格在R語言中改名叫數據框
(7)別只復制代碼密浑,要理解其中的命令、函數的意思粗井。函數或者命令不會用時尔破,除了百度/谷歌搜索以外,用這個命令查看幫助:?read.table浇衬,調出對應的幫助文檔懒构,翻到example部分研究一下。
(8)數據類型(重點只有兩個耘擂,剩下的不看)
學習內容:
- 向量(vector)??重要
- 矩陣(Matrix)
- 數組(Array)
- 數據框(Data frame)??重要
- List
1. 向量
1.1 元素胆剧、向量和標量
抄筆記:
- 元素:數字或者字符串(用chr表示)等,根據它可以區(qū)分標量與向量醉冤;
- 標量:一個元素組成的變量秩霍;
- 向量:多個元素組成的變量;
補充:一個向量是一排有序排列的元素蚁阳,以后會用到把一個向量作為數據框中的一列的情況铃绒。
1.2 賦值
使用時,一般都會直接給變量定義螺捐,也就是“賦值”颠悬,字面意思是賦予這個變量一個數值(其實也不一定是數值矮燎,還可以是字符串/數據框等等)。
x<- c(1,2,3) #常用的向量寫法椿疗,意為將x定義為由元素1漏峰,2糠悼,3組成的向量届榄。
x
x<- 1:10 #從1-10之間所有的整數
x
x<- seq(1,10,by = 0.5) #1-10之間每隔0.5取一個數(注意是逗號不是分號)
x
x<- rep(1:3,times=2) #1-3 重復2次
x
抄筆記:
新手tips:
如果你把這幾行代碼都打過了,那么x就被你賦值了4次倔喂,結果就是铝条,第一次賦值被第二次的覆蓋了,第二次的賦值又被第三次的覆蓋了席噩,以此類推班缰,以最后一次為準哦。
練習1-1:
PS:教程里的例子未能理解悼枢,先跳過埠忘。
1.2 從向量中提取元素
1.2.1 根據元素位置
#這里的x是你剛才賦值的變量名,根據自己的情況來修改
x[4] #x第4個元素
x[-4]#排除法馒索,除了第4個元素之外剩余的元素
x[2:4]#第2到4個元素
x[-(2:4)]#除了第2-4個元素
x[c(1,5)] #第1個和第5個元素
練習1-2:
1.2.2 根據值
x[x==10]#等于10的元素
x[x<0]
x[x %in% c(1,2,5)]#存在于向量c(1莹妒,2,5)中的元素
練習1-3:
從向量中提取元素的命令參考:
R語言筆記-向量操作
2. 數據框:
抄筆記:
示例數據是如何獲得的绰上?(可跳過)
(1)新建doudou.txt旨怠,輸入以下(如果教程里讓你新建,又沒說在哪里蜈块,你就默認在工作目錄下新建鉴腻。)
X1,X2
A,1
B,
C,
D,3
E,
小抄截圖中顯示的NA表示空值,所以新建的時候像我一樣空著就好百揭。
用以下命令即可獲得示例數據框:
X<-read.csv('doudou.txt')
將示例數據放在你的工作目錄下(Kァ!器一!重要)
2.1 讀取本地數據
(以huahua.txt數據為例课锌,記得一定要放在工作目錄里,否則報錯盹舞。)
本節(jié)筆記參考前學員筆記
read.table函數讀入數據
文本數據常用儲存格式有兩種:一種是CSV(逗號分隔符文本)产镐,另一種是TXT(Tab分隔符或空格分隔符)。
- 當數據文件所在目錄被設為工作目錄時踢步,讀入文件只需要寫文件名:
read.table('cancer.txt', header=TURE)
- 當不設置工作目錄時癣亚,讀入文件時需要寫完整路徑:
read.table('C:/Data/mydata/cancer.txt', header=TURE)
2.1.1 讀入txt格式文件
read.table("huahua.txt",sep="\t",header=T)
或
read.table("doudou.txt",sep=",",header=T)
或
read.csv("huahua.txt",sep = " ",header =T)
但是不能read.csv("huahua.txt",sep = "\t",header =T)
sep,header是比較常用的參數获印,可以看幫助文檔理解述雾。
sep=
sep= :文件中的字段分離符,用于文件數據文本的讀取和保存過程中指定分割符號。一般情況下:
- csv 文件 sep = “,” # 以逗號分割
- txt 文件 sep = “\t” #以制表符分割
- 其他文件 sep = " " #以空格分割
- 具體情況玻孟,具體調整
>* 若不指定sep參數唆缴,則默認參數sep='\t'。
來源:R語言 文本文件分割 符號 sep;前學員筆記
- 練習:比較sep = ","黍翎、sep = "\t"面徽,sep = " ",sep = "? "匣掸。
未完待續(xù):
(1)比較read.table("doudou.txt")
趟紊、read.csv("huahua.txt")
、read.table(‘doudou.txt’)碰酝、read.csv(‘huahua.txt’)
霎匈;
(2)比較read.table("huahua.txt",sep="\t",header=T)
、read.csv("huahua.txt",sep="\t",header=T)
送爸;
注意:doudou.txt與huahua.txt的區(qū)別铛嘱。
結論:讀取txt文檔時,sep = ""袭厂、sep =墨吓,sep以及不輸入sep都不可以;必須對sep賦值嵌器。
"header="
一個邏輯值(header=TRUE or header=FALSE)肛真,用來反映這個文件的第一行是否包含變量名。
- header=T 代表讀入數據時將第一行作為列名;
- header= F 不使用文件中第一行作為列名爽航;
來源: 數據導入讀取read.table函數詳解蚓让,如何讀取不規(guī)則的數據(fill=T);前學員筆記
-
練習:比較header=T與header= F
2.1.2 讀入csv格式文件
read.csv("XX.csv",sep=",",header=T)
讥珍,必須指定sep=","历极。
若使用read.csv函數讀入數據時,則必須設置txt格式文件讀入sep="\t"衷佃,而不需要指定csv文件的sep趟卸,因為默認為","。
來源:前學員筆記
2.2 設置行名和列名
X<-read.csv('doudou.txt') #在示例數據里有doudou.txt 注意這里的變量X是一個數據框
colnames(X) #查看列名
rownames(X) #查看行名,默認值的行名就是行號氏义,1.2.3.4...
colnames(X)[1]<-"bioplanet"#有的公司返回數據锄列,左上角第一格為空,R會自動補為x,用這個命令來修改
X<-read.csv(file = "huahua.txt",sep = "\t",header =T,row.names=1)#最后row.names的意思是修改第一列為行名
(其實我們這個數據框并不需要改惯悠,如果你已經改了邻邮,知道怎么撤銷嗎?用剛才的read.table命令重新賦值一遍就可以覆蓋掉你剛才改瞎的了克婶。這也就是變量為什么叫"變"量)
嗯筒严。我故意寫了個大寫的X丹泉,就是告訴你一下大小寫是嚴格區(qū)分的,耶鸭蛙。
2.3 數據框的導出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改為逗號摹恨,字符串不加雙引號(默認格式帶由雙引號)
write.table函數 write.table (x, file ="", sep ="", row.names =T, col.names =T, quote =T)
x:需要導出的數據
file:導出的文件路徑或名稱
sep:分隔符,"\t"或","或" "
row.names:是否導出行序號娶视,T是導出行序號
col.names:是否導出列名晒哄,T是導出列名
quote:字符串是否使用引號表示,T用引號表示歇万,F則不用雙引號揩晴。
來源:前學員筆記
2.4 變量的保存與重新加載
- 這次沒有處理完的數據下次想接著用怎么辦?--學會保存和重新加載勋陪。保存的格式是RData贪磺。
save.image(file="bioinfoplanet.RData")#保存當前所有變量
save(X,file="test.RData")#保存其中一個變量
load("test.RData")#再次使用RData時的加載命令
save(X,file="123.RData") #在數據沒有處理完時臨時保存
load("test.RData") #重新加載
來源:前學員筆記
2.5 提取元素
(這里的X是的剛才的變量名,實際應用要懂得替換诅愚。)
- X[x,y]#第x行第y列
- X[x,]#第x行
- X[,y]#第y列
- X[y] #也是第y列
- X[a:b]#第a列到第b列
- X[c(a,b)]#第a列和第b列
- X$列名#也可以提取列(優(yōu)秀寫法寒锚,而且這個命令還優(yōu)秀到不用寫括號的地步,并且支持Tab自動補全哦违孝,不過只能提取一列)
2.6【選修部分】直接使用數據框中的變量
未學習
問題:
回答問題:save(X,file="test.RData")這句代碼如果報錯object X not found刹前,是為什么,應該怎么解決雌桑?
回答:重新對X進行賦值喇喉,讀取本地數據。