R語(yǔ)言學(xué)習(xí)數(shù)據(jù)獲取操作示例詳解
簡(jiǎn)介
實(shí)際上,R 中有大量的內(nèi)置數(shù)據(jù)集可用于分析和實(shí)踐,我們也可以在R 中創(chuàng)建模擬特定分布的數(shù)據(jù)。而在實(shí)際工作中,數(shù)據(jù)分析者更多時(shí)候面對(duì)的是來(lái)自多種數(shù)據(jù)源的外部數(shù)據(jù),即各式各樣擴(kuò)展名的數(shù)據(jù)文件,如 .txt、.csv、.xlsx、.xls 等。不同擴(kuò)展名的文件代表不同的文件格式,這常常會(huì)給分析者帶來(lái)困擾。
R 提供了適用范圍廣泛的數(shù)據(jù)導(dǎo)入工具。
1.獲取內(nèi)置數(shù)據(jù)集
R 中的內(nèi)置數(shù)據(jù)集存在于各個(gè)包中,其中基本包 datasets
里只有數(shù)據(jù)集,沒(méi)有函數(shù)。這個(gè)包提供了近 100 個(gè)數(shù)據(jù)集,涵蓋醫(yī)學(xué)、自然、社會(huì)學(xué)等各個(gè)領(lǐng)域。
你可以用下面的命令進(jìn)行查看:
data(package = "datasets")
如果想要調(diào)用某個(gè)數(shù)據(jù)集,可以使用 data( )
函數(shù)。運(yùn)行下面的命令,R 會(huì)加載數(shù)據(jù)集 iris 到工作空間。
data(iris)
除了 datasets 包,R 中很多其他的包也帶有數(shù)據(jù)集。如果不是運(yùn)行 R 后自動(dòng)加載的基本包,我們需要安裝和加載這些包以后才能使用其中的數(shù)據(jù)。下面以 MASS 包里的數(shù)據(jù)集 bacteria 為例說(shuō)明數(shù)據(jù)的調(diào)用過(guò)程:
library(MASS) data(bacteria)
2. 模擬特定分布的數(shù)據(jù)
R 提供了一系列可以用于數(shù)值模擬的函數(shù)。這些函數(shù)以 r
開頭,常用的有:rnorm( )、runif( )、rbinom( )和 rpois( ) 等。例如:
# 后續(xù)可視化部分會(huì)詳細(xì)介紹直方圖 r1 <- rnorm(n = 100, mean = 0, sd = 1) # head(r1) # 取前 5 個(gè)值看看 hist(r1) r2 <- runif(n = 10000, min = 0, max = 100) hist(r2) r3 <- rbinom(n = 80, size = 100, prob = 0.1) hist(r3) r4 <- rpois(n = 50, lambda = 1) hist(r4)
3. 獲取其他格式的數(shù)據(jù)
3.1 txt 與csv 格式
如果數(shù)據(jù)來(lái)源是一個(gè)用 Windows 記事本或其他純文本編輯器所創(chuàng)建的 ASCII 格式文件,我們可以使用函數(shù) read.table( )
讀取其中的數(shù)據(jù),返回的是一個(gè)數(shù)據(jù)框。
例如,假設(shè)創(chuàng)建的數(shù)據(jù)框 patients 的數(shù)據(jù)文件 patients.txt
存放于當(dāng)前工作目錄下,我們可以使用下面的命令讀取該數(shù)據(jù):
# getwd() # 獲取當(dāng)前工作目錄 # 臨時(shí)創(chuàng)建下 patients.txt 數(shù)據(jù)文件 ID <- 1:5 sex <- c("male", "female", "male", "female", "male") age <- c(25, 34, 38, 28, 52) pain <- c(1, 3, 2, 2, 3) pain.f <- factor(pain, levels = 1:3, labels = c("mild", "medium", "severe")) patients <- data.frame(ID, sex, age, pain.f) write.table(patients, "patients.txt", row.names = FALSE) patients.data <- read.table("patients.txt", header = TRUE) patients.data
在電子表格和數(shù)據(jù)庫(kù)應(yīng)用中經(jīng)常會(huì)生成帶分隔符的文本文件,其中 .csv 文件是用逗號(hào)分隔取值(Comma Separated Values)。函數(shù) read.csv( )
是函數(shù) read.table( ) 的一個(gè)變體,專用于讀取 .csv 文件。
read.table ( )
和 read.csv ( )
兩個(gè)函數(shù)中參數(shù)的默認(rèn)值是不同的。
在函數(shù) read.table ( )
中,參數(shù) header 默認(rèn)值為 FALSE,即認(rèn)為文件第一行開始就是數(shù)據(jù)而非變量名。
而在函數(shù) read.csv ( )
中,參數(shù) header 默認(rèn)值為 TRUE。因此,在讀入數(shù)據(jù)前,建議先打開原始文件進(jìn)行查看,然后設(shè)置恰當(dāng)?shù)膮?shù)正確地讀入數(shù)據(jù)。
write.csv(patients, "patients.csv", row.names=FALSE) patients.data <- read.csv("patients.csv") patients.data
3.2 xls 或 xlsx 格式
讀取電子表格數(shù)據(jù)有很多種方式,其中最簡(jiǎn)單的方式是在 Excel 中將數(shù)據(jù)文件另存為一個(gè)逗號(hào)分隔(.csv)文件,然后用上述讀取.csv 文件的方法將其讀入R。還可以借助第三方包(例如 openxlsx 包、readxl 包和 gdata 包)直接讀取 xlsx 或 xls 格式的數(shù)據(jù)文件。
以 openxlsx 包為例:
library(openxlsx) write.xlsx(patients, "patients.xlsx") patients.data <- read.xlsx("patients.xlsx", sheet = 1) patients.data
3.3 導(dǎo)入其他統(tǒng)計(jì)軟件的數(shù)據(jù)
有時(shí)我們需要讀取其他統(tǒng)計(jì)軟件產(chǎn)生的數(shù)據(jù),如 SPSS、SAS、Stata、Minitab 等。一種方法是從其他統(tǒng)計(jì)軟件將數(shù)據(jù)輸出為文本文件,然后使用函數(shù) read.table( ) 或 read.csv( ) 將數(shù)據(jù)讀入 R。另一種方法是借助擴(kuò)展包,比如 foreign 包,該包的主要功能就是讀寫其他統(tǒng)計(jì)軟件的數(shù)據(jù)。
下面以導(dǎo)入 SPSS 數(shù)據(jù)文件為例進(jìn)行說(shuō)明。
假設(shè)數(shù)據(jù)文件 patients.sav
存放于當(dāng)前工作目錄下,我們可以使用下面的命令將該數(shù)據(jù)集讀入 R:
# 為了節(jié)約附件數(shù)量,讓我們直接從下載到工作區(qū) URL <- "http://download.kesci.com/qlhatmok4/patients.sav" download.file(URL, destfile = "./patients.sav", method="curl") library(foreign) # 函數(shù) `read.spss( )` 中的參數(shù) `to.data.frame` 默認(rèn)為 FALSE,如果不設(shè)置為 TRUE,返回的將是一個(gè)列表形式數(shù)據(jù)。 patients.data <- read.spss("patients.sav" , to.data.frame = TRUE) patients.data
用 foreign 包導(dǎo)入SAS、Stata 等軟件的數(shù)據(jù)文件的過(guò)程與上面類似,具體請(qǐng)查閱文檔。
4.數(shù)據(jù)錄入
在 R 中可以直接輸入數(shù)據(jù),但是如果數(shù)據(jù)量較大(超過(guò) 10 列或超過(guò) 30 行),在 R 里錄入數(shù)據(jù)并不是一個(gè)最佳選擇。我們可以選擇電子表格軟件錄入小規(guī)模的數(shù)據(jù),比如 Excel。
但是如果數(shù)據(jù)量很大,使用電子表格軟件手工錄入數(shù)據(jù)的出錯(cuò)概率也較大。這時(shí),專門為數(shù)據(jù)錄入而設(shè)計(jì)的程序軟件更為合適,比如免費(fèi)的軟件 EpiData。該軟件不僅可以方便地設(shè)置數(shù)據(jù)錄入的約束條件,比如范圍檢查、自動(dòng)換行等,還可以對(duì)每個(gè)變量和變量值添加標(biāo)簽。
foreign 包里的函數(shù) read.epiinfo( )
可以直接讀取 EpiData 生成的 .rec 文件,但是建議先在 EpiData 中將錄入的數(shù)據(jù)導(dǎo)出為 Stata 數(shù)據(jù)文件,然后在 R 中使用函數(shù) read.dta( ) 讀入數(shù)據(jù)。這樣做的好處是可以保留在 EpiData 中預(yù)設(shè)的變量的屬性,例如變量標(biāo)簽和描述等。
以上就是R語(yǔ)言學(xué)習(xí)數(shù)據(jù)獲取操作示例詳解的詳細(xì)內(nèi)容,更多關(guān)于R語(yǔ)言數(shù)據(jù)獲取操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語(yǔ)言ggplot2x軸順序設(shè)置自定義顏色的操作
這篇文章主要介紹了R語(yǔ)言ggplot2x軸順序設(shè)置自定義顏色的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言模擬疫情傳播圖RVirusBroadcast展示疫情數(shù)據(jù)
本文用RVirusBroadcast展示模擬的疫情數(shù)據(jù),讓R語(yǔ)言模擬疫情傳播圖來(lái)告訴你為什么還不到出門的時(shí)候,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02R語(yǔ)言實(shí)現(xiàn)ggplot重繪天貓雙十一銷售額曲線圖過(guò)程
這篇文章主要為大家介紹了如何使用ggplot繪制天貓雙十一銷售額曲線圖的實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11R語(yǔ)言基于Keras的MLP神經(jīng)網(wǎng)絡(luò)及環(huán)境搭建
這篇文章主要介紹了R語(yǔ)言基于Keras的MLP神經(jīng)網(wǎng)絡(luò),我并沒(méi)有使用python去對(duì)比結(jié)果,但NSS的文章中有做對(duì)比,數(shù)據(jù)顯示R與Python相比在各方面的差別都不大,具體內(nèi)容介紹跟隨小編一起看看吧2022-01-01R語(yǔ)言繪制Facet violin plot小提琴刻面圖實(shí)現(xiàn)示例
這篇文章主要為大家介紹了R語(yǔ)言繪制Facet violin plot小提琴刻面圖的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02詳解R語(yǔ)言中生存分析模型與時(shí)間依賴性ROC曲線可視化
這篇文章主要介紹了R語(yǔ)言中生存分析模型與時(shí)間依賴性ROC曲線可視化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03