R語言數據的導入與導出


1.R數據的保存與加載

可通過save()函數保存為.Rdata文件,通過load()函數將數據加載到R中。

 

[ruby]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. > a <- 1:10  
  2. > save(a,file='d://data//dumData.Rdata')  
  3. > rm(a)   #將對象a從R中刪除  
  4. > load('d://data//dumData.Rdata')  
  5. > print(a)  
  6.  [1]  1  2  3  4  5  6  7  8  9 10  


2.CSV文件的導入與導出

 

下面創建df1的數據框,通過函數write.csv()保存為一個.csv文件,然后通過read.csv()將df1加載到數據框df2中。

 

[ruby]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. > var1 <- 1:5  
  2. > var2 <- (1:5)/10  
  3. > var3 <- c("R and","Data Mining","Examples","Case","Studies")  
  4. > df1 <- data.frame(var1,var2,var3)  
  5. > names(df1) <- c("VariableInt","VariableReal","VariableChar")  
  6. > write.csv(df1,"d://data//dummmyData.csv",row.names = FALSE)  
  7. > df2 <- read.csv("d://data//dummmyData.csv")  
  8. > print(df2)  
  9.   VariableInt VariableReal VariableChar  
  10. 1           1          0.1        R and  
  11. 2           2          0.2  Data Mining  
  12. 3           3          0.3     Examples  
  13. 4           4          0.4         Case  
  14. 5           5          0.5      Studies  

 

 

3.通過ODBC導入與導出數據

RODBC提供了ODBC數據庫的連接。

3.1從數據庫中讀取數據

odbcConnect()建立一個數據庫連接,sqlQuery()向數據庫發送一個SQL查詢,odbcClose()關閉數據庫連接。

 

[ruby]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. library(RODBC)  
  2. connection <- odbcConnect(dsn="servername",uid="userid",pwd="******")  
  3. query <- "SELECT * FROM lib.table WHERE ..."  
  4. # or read query from file  
  5. # query <- readChar("data/myQuery.sql", nchars=99999)  
  6. myData <- sqlQuery(connection, query, errors = TRUE)  
  7. odbcClose(connection)  

sqlSave()和sqlUpdate()用於寫入或更新一個ODBC數據庫表。

 

R語言數據儲存與讀取

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

 

數據保存

創建數據框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) # 空格分隔

>write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F, sep="\t")  # tab 分隔的文件

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")

 

數據讀取

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

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( ) 變形有: read.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"))

 

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)

 

 

To an Excel Spreadsheet 保存為Excel文件:

library(xlsx)    #   注意: 軟件包需要安裝
write.xlsx(mydata, "c:/mydata.xlsx") #   參考: https://danganothererror.wordpress.com/2012/02/12/write-data-frame-to-excel-file/

The WriteXLS function from the WriteXLS package (link: http://cran.r-project.org/web/packages/WriteXLS/index.html) can write data to Excel.

Alternatively, write.xlsx from the xlsx package (link: http://cran.r-project.org/web/packages/xlsx/) will also work.

 

注意:

1 writeLines 會在最后一行/或者每行末尾加一個換行符

# fileConn<-file(output_fasta)
# writeLines(mystr, fileConn)
# close(fileConn)

2 另外一個寫文件的方法是sink,不會在行末加換行符

sink(output_fasta)
cat(mystr)
sink()

 

write is a wrapper for cat, which gives further details on the format used.

save for writing any R objects, write.table for data frames, and scan for reading data.

 

 


免責聲明!

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



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