close
讀檔的基本介紹在:一般資料匯入R的必殺技
這裡是
非常簡略的筆記,給須要同時整理一堆檔案的人。
主要提幾個重要的函數家族,這裡提的函數都值得去查help看example的示範,請自己試。
 
getwd() #查詢現在R所在的工作目錄 
setwd("...") #設定R所在的工作目錄 
假設要讀的資料檔們在R所在工作目錄下的XXX資料夾裡
Path <- “XXX” 
FileName <- dir(Path)  #抓資料夾裡的所有檔名,並把所有檔名存起來
FilePath <- paste(Path,  FileName, sep=“/")  #製造想要讀的所有檔案的路徑文字串
 
讀資料
i <- 1
Data <- read.table(FilePath[i], …, stringsAsFactors=FALSE )
讀資料且讓文字視為字串而不是Factor:使用data.frame時,Factor會比character處理上慢很多也須要更多記憶體。資料中文字符多時,強烈建議stringsAsFactors關掉,等之後要分析數據質、畫圖須要Factor的性質時再用as.factor()去修改變數的結構。也可以用as.charactor()把factor轉成文字串。
讀資料也可能用:read.cvs(); scan(); readLines()
 
assign(paste0(“Data”, i), read.table(FilePath[i], …., ))  
一組資料存一個物件:檔名要自動變換時,沒辦法用<- 或 = 下去存物件,只能用assign()
get(paste0(“Data”, i))  # 相當於assign的反函數,提取某一個檔名的資料
 
如果每張table都是一樣大,一樣的性質,也可以用三維的array來存資料,維度不等的表格可存成list,把所有資料弄成一個物件。
 
還有一種作法是當資料量太大時,同一時間只有一部份資料能在R裡,可以先做好一堆Rdata檔,要用的部份才load進來。
for(i in 1:length(FilePath)){
    Data <-read.table(FilePath[i], …., ))  #把第i個檔案存成物件Data
    ... 
    save(Data, file=paste0(FileName[i], “.Rdata”)) # 整理資料後,把Data 存成Rdata檔輸出
}
load(paste0(FileName[1], “.Rdata”))   #load算是save的反函數
 
在整理或合併輸出結果時:
cbind() 比rbind() 花時間 (cbind 應用到data.frame 較慢)
或是先製造空物件空表格,再跑迴圈把須要存的東西assign到指定位置(資料量大的話會需要這種作法,較cbind快)。
 
截取文字串相關的:
nchar() 查文字串長度
substr()  取第幾到第幾位字符
strsplit() 根據特字符拆文字串,類似paste的反函數,注意output是list,常搭配unlist()或利用lapply()取要用的部份
paste() 常用來製造須要的名字或文字串,兩種非常常用用法
    paste(“X", 1:10, sep="_”)
    paste(1:10, collapse=“+")
    兩種併用:
    paste(“X", 1:10, sep=“_”, collapse="+")
sprintf("%03.0f", 1:10)  #製造符合特殊格式的字串
 
grep和match家族:
grep() 找有某字串(或某種pattern)的文字
gsub() 把某字串取代成另一字串
match() 
%in%
"%w/o%" <- function(x, y) x[!x %in% y] #--  x without y
其他邏輯運算:查 help(“==")
is.na和na.omit 判斷、刪除NA   (像NA、NULL這種特殊字符,不能用 X==NA 這種方法去找NA)
 
想要學R更多相關的function,除了google,要善用help裡的see also 和examples.
參考:如何自學R:help()
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 霹靂貓 的頭像
    霹靂貓

    生活統計二三事

    霹靂貓 發表在 痞客邦 留言(0) 人氣()