R語言數據讀取以及數據保存方式
更新時間:2021年04月06日 08:56:51 作者:
這篇文章主要介紹了R語言數據讀取以及數據保存方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
一、R語言讀取文本文件:1、文件目錄操作:
getwd() : 返回當前工作目錄
setwd("d:/data") 更改工作目錄
2、常用的讀取指令read
read.table() : 讀取文本文件
read.csv(): 讀取csv文件
如果出現缺失值,read.table()會報錯,read.csv()讀取時會自動在缺失的位置填補NA
3、靈活的讀取指令
scan() :
4、讀取固定寬度格式的文件:
read.fwf()
文本文檔中最后一行的回車符很重要,這是一個類似于停止符的標識,否則讀入時會顯示“最后一行不完整”的警告,但是不影響數據讀入的效果。
5、讀取Excel數據:
(1)第一種方法
首先打開Excel,選中需要的數據后復制,
然后再R中輸入以下的指令:data.excel =read.delim("") #即剪貼板
(2)第二種方法:
使用RODBC包,獲取Excel連接的函數是()和() 分別讀取版和2007版的數據 =("d:/a.xlsx")
sqlTables(channel)# 列出Excel中的表格
獲取中的數據,可以使用如下任意的一種方式,
data.excel2 =sqlFetch(channel,"Sheet1") data.excel2 =sqlQuery(channel,"select * from [Sheet1$]") close(channel) #關閉ODBC連接,釋放空間
6、讀取網頁數據
()函數
7、讀取R格式的文件:
R的數據或者更一般的對象可以通過save()保存為R專有的文件格式,以Rdata為后綴,要讀取此類文件,需要用到函數load()來加載,
8、("d:/data/cat.txt"):
可以直接從連接中以行的形式來讀取文本
要顯示列表中的變量 需要使用符號$
二、數據保存:1、使用函數cat()
cat(...,file="",sep="",fill = FALSE ,=NULL,=FALSE) #file表示要輸出的文件名r語言打開文件位置,當參數=TRUE時,在指定文件的末尾添加內容。sep:表示以空格作為分隔符
2、保存為文本文件:
write僅可以寫出一個矩陣或向量的特定列,和對一個矩陣進行轉置
write.table() 可以把一個數據框或列表等對象以包含行列標簽的方式寫出。
write.csv(): 將數據框保存為逗號分隔文件,但是不包含列名
3、保存R格式文件:
save(data,file="d:/data/salary1.Rdata")
dim():求維度
mode() 用來顯示對象的類型
names():顯示對象中的標簽
補充:R語言讀取數據、拆分數據r語言打開文件位置,并保存到相應文件夾
將一張Excel表的數據按照第一列元素分組,分組后按照某種規則命名,并重新讀入Excel中,放入指定的文件夾中。
如上所示的excel表,將中的數據按照“地域名稱”拆分,并將數據放入相應的省份文件夾,如放入D盤的test文件夾中
D:\\test
|
|.xlsx
|___安徽省
|___安徽省安慶市.xlsx
|___安徽省蚌埠市.xlsx
|___河北省
|__河北省蚌埠市.xlsx
|___……
假如數據最終的文件夾目錄如上所示。代碼可以作如下編寫:
library(readxl) # 載入readxl包,使用read_excel讀入excel文件 library(xlsx) # 載入xlsx包,使用write.xlsx保存文件為excel格式 # setwd()設置路徑為D:\\mydata\\test' setwd('D:\\mydata\\test') # read_excel 讀入數據,具體用法可使用幫助。 # 1表示讀入第一張sheet,2表示讀入第二張sheet,也可用sheet = "sheetname",默認第一行為標題行 dt = read_excel('mydata.xlsx', 2) # unique() 過濾重復數據,保留唯一數據 # 此處過濾掉第2列和第3列的重復行,最終只剩下3行不重復數據,默認不含標題 province_city <- unique(dt[,2:3]) setwd('D:\\mydata\\test') # 設置當前路徑為省份文件夾放置的目錄 cdir <- setwd('D:\\mydata\\test') # 循環次數 n=province_city 的行數 for (i in c(1:nrow(province_city [,1]))){ # subset()讀取子集,subset(data, data[, 1] == "a") 讀取data中第一列所有為a的行 dt1 <- subset(dt, dt[,2]==as.character(province_city[i,1])) # paste,設置filename, 即安徽省,河北省 cfilename = paste(province_city[i,1],".xlsx",sep = "") # 用于下面的if語句判斷 創建的“安徽省”目錄是否存在 f_dir = paste('D:\\mydata\\test\\',province_city[i,2],sep="") # 創建的“安徽省”目錄不存在,則創建;存在則不動作. F 表示False if (file.exists(f_dir) == F){ dir.create(province_city[i,2]) }else { } # 設置文件名稱,即安徽省安慶市.xlsx c_dir = paste('D:\\mydata\\test\\',province_city[i,2],sep = "") # 設置c_dir為當前路徑 setwd(c_dir) # write.xlsx 將所需的文件列保存到上述設置的文件中,col.names=TRUE包含標題 write.xlsx(dt1[,2:5],cfilename,col.names=TRUE,showNA=FALSE) # 設置路徑為cdir,進入到下一次循環 setwd(cdir) }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。