R語言之讀取資料夾的資料
阿新 • • 發佈:2021-01-17
技術標籤:r語言
讀取檔案路徑:一層目錄(“示例”)、二層目錄(“資料1”、“資料2”)下的表格資料。
“示例”檔案下:
“資料1”檔案下:
“資料2”檔案下:
讀取資料夾
rm(list=ls()) #清除變數
# getwd() #獲取當前的工作目錄
setwd("D:/data_r") #指定工作目錄
first_file_name <- list.files("示例") #使用list.files得到“示例”資料夾的所有資料夾的名稱 dir <- paste("./示例/",first_file_name,sep = "") #用paste命令構建路徑變數dir n <- length(dir) #讀取dir長度(“示例”檔案下的檔案個數) n_sub <- rep(0,n) #生成n個0向量 n_sub <- as.data.frame(n_sub) #轉換成資料框 n_sub <- t(n_sub) #轉置
讀取資料時先讀取一個表的資料儲存在data中,後續讀取的表格資料使用cbind函式依次新增到data中。
data <- readxl::read_excel("D:/data_r/示例/資料1/表一.xlsx")
for (i in 1:n) { b=list.files(dir[i]) #讀取“示例”下各個資料夾的表 print(b) n_sub[i]=length(b) #把“示例”下各個資料夾的表的個數存在n_sub中 for (j in 1:n_sub[i]) { file=paste(dir[i],"/",b[j],sep = "") new_data <- readxl::read_excel(file) print(dim(new_data)) # new_data <- new_data[-1,] #刪除第一行 # names(new_data) <- NULL #會報錯 if(i==1&j==2){ #讀到表一的資料跳過 next } else{ data <- rbind(data,new_data) #rbind合併兩個資料框,不用擔心行名的問題 } } }
輸出:
資料處理
data1 <- data[nchar(data$聯絡方式)==11,] # 篩選出電話號碼是11位
dim(data1)
data2 <- data1[!duplicated(data1$聯絡方式),] # 電話號碼去重後的資料
dim(data2)
write.table(data2,"去重資料.csv",sep=",",row.names = FALSE) # 寫入資料
可參考連結:https://www.cnblogs.com/lzllovesyl/p/5170032.html