R語言:讀取數據


主要學習如何把幾種常用的數據格式導入到R中進行處理,並簡單介紹如何把R中的數據保存為R數據格式和csv文件。


1、保存和加載R的數據(與R.data的交互:save()函數和load()函數)
a <- 1:10
save(a, file = "data/dumData.Rdata") # data文件為當前工作目錄下的文件,必須存在
rm(a)
load("data/dumData.Rdata")
print(a)

2、導入和加載.csv文件(write.csv()函數和read.csv()函數)
var1 <- 1:5
var2 <- (1:5) / 10
var3 <- c("R", "and", "Data Mining", "Examples", "Case Studies")
a <- data.frame(var1, var2, var3)
names(a) <- c("VariableInt", "VariableReal", "VariableChar")
write.csv(a, "data/dummmyData.csv", row.names = FALSE)
b <- read.csv("data/dummmyData.csv")

3、導入SPSS/SAS/Matlab等數據集
# 導入spss的sav格式數據則要用到foreign擴展包,加載后直接用read.spss讀取sav文件
library(foreign)
mydata=read.spss('d:/test.sav')
# 上面的函數在很多情況下沒能將sav文件中的附加信息導進來,例如數據的label,
# 那么建議用Hmisc擴展包的spss.get函數,效果會更好一些。
library(Hmisc)
data=spss.get("D:/test.sav")

導入時候,如果報了這樣的錯誤:
Unrecognized record type 7, subtype 24 encountered in system file
可以使用下面的這個包:
library(memisc)
data<-as.data.set(spss.system.file("D:/test.sav"))

4、導入數據庫中的數據
library(RODBC)
Connection <- odbcConnect(dsn="servername",uid="userid",pwd="******")
Query <- "SELECT * FROM lib.table WHERE ..."
# Query <- readChar("data/myQuery.sql", nchars=99999) 或者選擇從SQL文件中讀入語句
myData <- sqlQuery(Connection, Query, errors=TRUE)
odbcCloseAll()

5、導入Excel數據
library(RODBC)
channel=odbcConnectExcel("d:/test.xls")
mydata=sqlFetch(channel,'Sheet1') # 如果是Excel2007格式數據則要換一個函數odbcConnectExcel2007

 

檢索:write.table write.csv區別  不寫入行名  row.names  不寫入列名  col.names

> write.table(x,file="mydata",row.names=FALSE,col.names=FALSE)  #可以
> write.csv(x,file="mydata2",row.names=FALSE,col.names=FALSE)  #不可以
 

1. 首先用getwd() 獲得當前目錄,用setwd("C:/data")設定當前目錄:

2.0 數據保存:創建數據框d: 

>d <- data.frame(obs = c(1, 2, 3), treat = c("A", "B", "A"), weight = c(2.3, NA, 9))

2.1 保存為簡單文本:

>write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F)

2.2 保存為逗號分割文本:

>write.csv(d, file = "c:/data/foo.csv", row.names = F, quote = F)

2.3 保存為R格式文件:

>save(d, file = "c:/data/foo.Rdata")

2.4 保存工作空間鏡像: 

>save.image( ) = save(list =ls(all=TRUE), file=".RData")

3.0 數據讀取:讀取函數主要有:read.table( ), scan( ) ,read.fwf( ).

3.1 用 read.table( ) 讀 "c:\data” 下houses.dat:

>setwd("C:/data"); HousePrice <- read.table(file="houses.dat") 

如果明確數據第一行做表頭,則使用header選項:

>HousePrice <- read.table("houses.dat", header=TRUE)

read.table( ) 變形有: aread.csv( ),read.csv2( ), read.delim( ), read.delim2( ).前兩讀取逗號分割數據,后兩個讀取其他分割符數據。

3.2  用scan( ) 比read.table( ) 更靈活。但要指定 變量類型:如:C:\data\data.dat:

M 65 168

M 70 172

F 54 156

F 58 163

>mydata <- scan("data.dat", what = list("", 0, 0)) 

>mydata <- scan("data.dat", what = list(Sex="", Weight=0, Height=0))

3.3 用read.fwf( )讀取文件中一些固定寬度數據:如:C:\data\data.txt:

A1.501.2

A1.551.3

B1.601.4

>mydata <- read.fwf("data.txt", widths=c(1, 4, 3), col.names=c("X","Y","Z"))

4.0 excel格式數據讀取:

4.1 利用剪切板:選擇excel數據,再用(CTRL+C)復制。在R中鍵入命令:

>mydata <- read.delim("clipboard")

4.2 使用程序包 RODBC.如: c:\data\body.xls

Sex Weight Height

M 65 168

M 70 172

F 54 156

F 58 163

> library(RODBC)

> z <- odbcConnectExcel("c:/data/body.xls")

> foo <- sqlFetch(z, "Sheet1")

> close(z)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM