R語(yǔ)言數(shù)據(jù)的輸入和輸出操作
數(shù)據(jù)的載入
R本身已經(jīng)提供了超過(guò)50個(gè)數(shù)據(jù)集,而在眾多功能包中,默認(rèn)的數(shù)據(jù)集被存放在datasets程序包中,通過(guò)函數(shù)data()k可以查看系統(tǒng)提供所有的數(shù)據(jù)包,同時(shí)可以通過(guò)函數(shù)library()加載程序包中的數(shù)據(jù)。
矩陣型數(shù)據(jù)最常用的讀取方式是read.table()具體的調(diào)用格式是()
read.table(file, header = FALSE, sep = "", quote = "\"'",dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, check.names = TRUE, fill = !blank.lines.skip,strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#",allowEscapes = FALSE, flush = FALSE,stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
file是要讀的數(shù)據(jù)文件名稱;header = TURE表示文件第一行變化變量名,sep = ""表示文件中的分割符為空格,dec = "."用來(lái)表示小數(shù)點(diǎn)的字符,
row.names, col.names,用來(lái)表示向量的行名與列名, na.strings = "NA"用來(lái)表示缺失值,skip = 0跳過(guò)前幾行
讀入數(shù)據(jù)后,可以通過(guò)簡(jiǎn)單的函數(shù)來(lái)查看數(shù)據(jù)的基本信息。mode(),names(),dim(), 且使用attach()函數(shù),便可以直接通過(guò)變量名來(lái)獲取變量中的信息,函數(shù)detach()用于執(zhí)行相反的操作。
處理其他格式的軟件
當(dāng)數(shù)據(jù)量較少時(shí),在EXCEL中復(fù)制好要用的數(shù)據(jù)然后導(dǎo)入到R中。
> data.excel = read.delim("clipboard") > data.excel X X1 X2 value 1 1 Be Be 1.00000000 2 2 B Be -0.20154586 3 3 Mg Be -0.31724811 4 4 Al Be -0.03359098
當(dāng)數(shù)據(jù)量很多時(shí),利用RODBC軟件包(提供r和各類數(shù)據(jù)庫(kù)的一個(gè)借口如access和SQL server等)所提供的方法便可以實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)的直接訪問(wèn)~
讀取來(lái)自網(wǎng)頁(yè)的數(shù)據(jù)
在實(shí)際的應(yīng)用中,從網(wǎng)站上直接獲取數(shù)據(jù)也是非常常見(jiàn)的,例如國(guó)家統(tǒng)計(jì)局官方發(fā)布的權(quán)威統(tǒng)計(jì)數(shù)據(jù),中國(guó)人民銀行網(wǎng)站發(fā)布的經(jīng)濟(jì)數(shù)據(jù)或其他專業(yè)財(cái)經(jīng)網(wǎng)站提供的股市、期貨、債券數(shù)據(jù)都是進(jìn)行宏觀數(shù)據(jù)分析工作時(shí)常用的數(shù)據(jù)源。R讀取網(wǎng)頁(yè)中的HTML表格數(shù)據(jù),需要用到XML程序包提供的readHTMLTable()函數(shù)。
readHTMLTable(doc, header = NA, colClasses = NULL, skip.rows = integer(), trim = TRUE, elFun = xmlValue, as.data.frame = TRUE, which = integer(), ...)
doc給出的是HTML文件或者網(wǎng)頁(yè)地址,which是返回網(wǎng)頁(yè)中的那幾個(gè)表格,注意如果網(wǎng)址較長(zhǎng)沒(méi)在輸入時(shí)需要換行,使用函數(shù)gsub將字符中的換行符刪去。
baseURL = gsub("\\n", "", baseURL)
數(shù)據(jù)的保存
數(shù)據(jù)處理的結(jié)果或者中間結(jié)果應(yīng)該被妥善保存,最基本的保存工作的函數(shù)為cat()函數(shù)。
cat(... , file = "", sep = " ", fill = FALSE, labels = NULL, append = FALSE)
參數(shù)file指定了輸出的文件名,若文件已存在則原來(lái)的內(nèi)容將被覆蓋,若將參數(shù)append = T,則是在文件末尾追加內(nèi)容。
> car = file("K:/car.txt") > cat("Make lp100km mass.kg List.price", "\"Alpha Remeo\" 9.5 1242 38500", "\"Audi A3\" 8.8 1160 38700", file = car, sep = "\n") > close(car)
更常用的寫文件方式是把一個(gè)矩陣或者數(shù)據(jù)框以矩形塊的形式整體寫入文件,用write.table()函數(shù)
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, qmethod = c("escape", "double"), fileEncoding = "")
數(shù)據(jù)預(yù)處理
常用的數(shù)學(xué)函數(shù)
sum(x) 對(duì)x中的元素求加和,
prod(x)對(duì)x中的元素求乘積,
max(x)/min(x)求x中元素的最大值和最小值,
range(x)返回取值范圍,相當(dāng)于[min(x),max(x)],
length(x)返回x中元素的個(gè)數(shù),
median(x)返回x中元素的中位數(shù),
var(x)求x中元素的方差,
sd(x)求x中元素的標(biāo)準(zhǔn)差,
cov(x,y)求x和y的協(xié)方差,
cor(x,y)求x和y的相關(guān)系數(shù),
round(x,n)對(duì)x中的元素四舍五入,保留小數(shù)點(diǎn)后的第n位,
sort(x)/order(x)排序,默認(rèn)升序,
rev(x)對(duì)x中的元素取逆序,
unique(x)對(duì)x中重復(fù)的元素只取一個(gè),
table(x)統(tǒng)計(jì)x中完全相同的數(shù)據(jù)個(gè)數(shù)。
修改數(shù)據(jù)標(biāo)簽
names()函數(shù)可以獲取數(shù)據(jù)集的列標(biāo)簽,dimnames()[[1]]表示對(duì)行標(biāo)簽進(jìn)行操作如:dimnames()[[1]][1:3] = c("1","2","3")將數(shù)據(jù)的取1-3行的標(biāo)簽改為1-3,dimnames()[[2]]表示列。
缺失值的處理
> air_data = airquality[1:7,1:4] > is.na(air_data) Ozone Solar.R Wind Temp 1 FALSE FALSE FALSE FALSE 2 FALSE FALSE FALSE FALSE 3 FALSE FALSE FALSE FALSE 4 FALSE FALSE FALSE FALSE 5 TRUE TRUE FALSE FALSE 6 FALSE TRUE FALSE FALSE 7 FALSE FALSE FALSE FALSE > sum(is.na(air_data)) [1] 3 > complete.cases(air_data) [1] TRUE TRUE TRUE TRUE FALSE FALSE TRUE > complete.cases(air_data$Ozone) [1] TRUE TRUE TRUE TRUE FALSE TRUE TRUE is.na用來(lái)分析數(shù)據(jù)中是否含有缺失值,complete.cases則是判斷每一行是否有缺失值,當(dāng)數(shù)據(jù)量變大時(shí),利用aggr()函數(shù)進(jìn)行判斷。 > air_data = airquality[1:31,1:4] > aggr(air_data, las = 1, numbers = T)
圖中的的小長(zhǎng)條的長(zhǎng)度表示各個(gè)變量的缺失數(shù)據(jù)的比例,可見(jiàn)wind和temp變量數(shù)據(jù)是完整的。
刪除缺失樣本
> data = air_data[complete.cases(air_data),] > dim(data) [1] 24 4 > data = na.omit(air_data) > dim(data) [1] 24 4
替換掉缺失值
用均值或者中位數(shù)去代替缺失值是通常的處理策略。
> air_data$Ozone[is.na(air_data$Ozone)] = median(air_data$Ozone[!is.na(air_data$Ozone)])
補(bǔ)充:R語(yǔ)言學(xué)習(xí)筆記--數(shù)據(jù)框輸出和查看
(1)將數(shù)據(jù)框C輸出為.csv文件
write.table(C,file="ABC.csv",sep = ",",row.names=FALSE)
#ABC.csv將保存在R的工作目錄下,當(dāng)不加sep = " "時(shí),輸出的數(shù)據(jù)會(huì)在同一個(gè)單元格里,因此要加“,”。
(2)查看數(shù)據(jù)框C的行數(shù)和列數(shù)
行數(shù):length(C[1, ])
列數(shù):length(C[ ,1])
行數(shù)+列數(shù):dim(C)
(3)查看數(shù)據(jù)框C的變量名即列名
colnames(C)
(4)查看數(shù)據(jù)框C的變量x1中不同值的個(gè)數(shù)
length(unique(C$x1))
(5)在console里的不同的輸出方式
print()
cat ( )
換行的話加“\n”
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
解決R語(yǔ)言安裝時(shí)出現(xiàn)輯程包不存在的問(wèn)題
這篇文章主要介紹了解決R語(yǔ)言安裝時(shí)出現(xiàn)輯程包不存在的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言關(guān)于隨機(jī)森林算法的知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于R語(yǔ)言關(guān)于隨機(jī)森林算法的知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。2021-05-05R語(yǔ)言 用均值替換、回歸插補(bǔ)及多重插補(bǔ)進(jìn)行插補(bǔ)的操作
這篇文章主要介紹了R語(yǔ)言 用均值替換、回歸插補(bǔ)及多重插補(bǔ)進(jìn)行插補(bǔ)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03