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