close
getwd() #查詢現在R所在的工作目錄
setwd("...") #設定R所在的工作目錄
假設要讀的資料檔們在R所在工作目錄下的XXX資料夾裡
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()
參考:如何自學R:help()
全站熱搜