巧用R語言實現各種常用的數據輸入與輸出

2021-02-18 數據分析1480

將數據輸入或加載到R工作空間中,是使用R進行數據分析的第一步。R語言支持讀取眾多格式的數據文件,excel文件,csv文件,txt文件和資料庫(MYSQL資料庫)等;其中,excel和csv是我們最常遇到的數據文件格式。

目錄

0 設置工作目錄【很重要】

1 read.table()  #讀取帶分隔符的文本/數據文件

2 read.csv()  #讀取.csv格式的數據,read.table的一種特定應用

3 excel數據文件讀取

4 scan #比read.table更加靈活

5 保存為.Rdata

6 write.table() 

7 CSV格式導出

(提示:加粗部分可重點學習

正文

0 設置工作目錄【很重要】

R語言中數據的輸入需要設置數據讀取的路徑,一般將數據文件放到工作目錄下,這樣直接就可以通過read.table等讀取數據文檔(不許要設置路徑)。

方法一:setwd()

setwd("E:/")  #設置當前工作目錄為"E:/"

getwd()  #讀取當前工作空間的工作目錄(文件讀取保存路徑)

> getwd()  [1] "C:/Users/ysl/Documents"> setwd("E:/") > getwd() [1] "E:/"

方法二:通過R-gui菜單欄設置(文件-改變工作目錄)

1 read.table()  #讀取帶分隔符的文本文件

read.table()函數是R最基本函數之一,讀取帶分隔符的文本/表格文件

#Usageread.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)read.csv(file, header = TRUE, sep = ",", quote = "\"",dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = "\"",dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "\t", quote = "\"",dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",            dec = ",", fill = TRUE, comment.char = "", ...)

常用參數的說明如下:

(1)file:file是一個帶分隔符的ASCII文本文件。

①絕對路徑或者相對路徑。一定要注意,在R語言中\是轉義符,所以路徑分隔符需要寫成"\\"或者「/」。所以寫成「C:\\myfile\\myfile.txt」或者「C:/myfile/myfile.txt」即可。

②使用file.choose(),彈出對話框,自動選擇文件位置。例如:read.table(file.choose(),...)。

(2)header:一個表示文件是否在第一行包含了變量的邏輯型變量。

如果header設置為TRUE,則要求第一行要比數據列的數量少一列。

(3)sep分開數據的分隔符。默認sep=""

read.table()函數可以將1個或多個空格、tab制表符、換行符或回車符作為分隔符。常見空白分隔符有:空格,制表符,換行符

sep=」 」;sep = 「\t」;sep = 「\n」

(4)stringsAsFactors 邏輯值,標記字符向量是否需要轉化為因子,默認是TRUE。stringsAsFactors = F意味著,「在讀入數據時,遇到字符串之後,不將其轉換為factors,仍然保留為字符串格式」。

(5)encoding 設定輸入字符串的編碼方式。

#讀取txt文檔

> df<- read.table("data.txt")> dfV1 V21  x  y2  1  23  3  44  5  6> df <- read.table("data.txt",header = T)> dfx y1 1 22 3 43 5 6

#樣式1:直接讀取數據

> df <- read.table("data.csv")  #直接讀取數據> head(df)V11 ID,Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species2                                     1,5.1,3.5,1.4,0.2,setosa3                                       2,4.9,3,1.4,0.2,setosa4                                     3,4.7,3.2,1.3,0.2,setosa5                                     4,4.6,3.1,1.5,0.2,setosa6                                       5,5,3.6,1.4,0.2,setosa

#樣式2:讀數+首行表頭

> df <- read.table("data.csv",header = T)  #讀數+首行表頭> head(df)ID.Sepal.Length.Sepal.Width.Petal.Length.Petal.Width.Species1                                     1,5.1,3.5,1.4,0.2,setosa2                                       2,4.9,3,1.4,0.2,setosa3                                     3,4.7,3.2,1.3,0.2,setosa4                                     4,4.6,3.1,1.5,0.2,setosa5                                       5,5,3.6,1.4,0.2,setosa6                                     6,5.4,3.9,1.7,0.4,setosa

#樣式3:讀數+首行表頭+","逗號分割

> df <- read.table("data.csv",header = T,sep=",")  #讀數+首行表頭+","逗號分割> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1  1          5.1         3.5          1.4         0.2  setosa2  2          4.9         3.0          1.4         0.2  setosa3  3          4.7         3.2          1.3         0.2  setosa4  4          4.6         3.1          1.5         0.2  setosa5  5          5.0         3.6          1.4         0.2  setosa6  6          5.4         3.9          1.7         0.4  setosa> summary(df)ID          Sepal.Length    Sepal.Width     Petal.Length  Min.   :  1.00   Min.   :4.300   Min.   :2.000   Min.   :1.000  1st Qu.: 38.25   1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600  Median : 75.50   Median :5.800   Median :3.000   Median :4.350  Mean   : 75.50   Mean   :5.843   Mean   :3.057   Mean   :3.758  3rd Qu.:112.75   3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100  Max.   :150.00   Max.   :7.900   Max.   :4.400   Max.   :6.900  Petal.Width          Species  Min.   :0.100   setosa    :50  1st Qu.:0.300   versicolor:50  Median :1.300   virginica :50  Mean   :1.199                  3rd Qu.:1.800                  Max.   :2.500                  

#樣式4:讀數+首行表頭+","逗號分割+字符轉因子factor

> df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)##讀數+首行表頭+","逗號分割+字符轉因子factor> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1  1          5.1         3.5          1.4         0.2  setosa2  2          4.9         3.0          1.4         0.2  setosa3  3          4.7         3.2          1.3         0.2  setosa4  4          4.6         3.1          1.5         0.2  setosa5  5          5.0         3.6          1.4         0.2  setosa6  6          5.4         3.9          1.7         0.4  setosa
#請注意species結果與樣式3中結果的差異> summary(df) ID Sepal.Length Sepal.Width Petal.Length Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 Median : 75.50 Median :5.800 Median :3.000 Median :4.350 Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900 Petal.Width Species Min. :0.100 setosa :50 1st Qu.:0.300 versicolor:50 Median :1.300 virginica :50 Mean :1.199 3rd Qu.:1.800  Max.   :2.500  

2 read.csv()  #讀取.csv格式數據,read.table的一種特定應用

read.csv() 讀取逗號分割數據文件,read.table()的一種特定應用

默認逗號分割,header=T,stringsAsFactor = T

df <- read.csv("data.csv")

等同df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)

read.csv(file, header = TRUE, sep = ",", quote = "\"",         dec = ".", fill = TRUE, comment.char = "", ...)

#實例> df <- read.csv("data.csv") #相當於df <- read.table("data.csv",header = T,sep=",",stringsAsFactor = T)> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1  1          5.1         3.5          1.4         0.2  setosa2  2          4.9         3.0          1.4         0.2  setosa3  3          4.7         3.2          1.3         0.2  setosa4  4          4.6         3.1          1.5         0.2  setosa5  5          5.0         3.6          1.4         0.2  setosa6  6          5.4         3.9          1.7         0.4  setosa

 3 excel數據文件讀取

這裡只講1種:readxl,其他excel數據讀取方法可自行百度

install.packages("readxl")library(readxl)df <- read_excel("文件名",sheet=1)

4 scan #類似read.table(),但比read.table更加靈活

scan(file = "", what = double(), nmax = -1, n = -1, sep = "",     quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",     skip = 0, nlines = 0, na.strings = "NA",     flush = FALSE, fill = FALSE, strip.white = FALSE,     quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,     comment.char = "", allowEscapes = FALSE,     fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

關於scan的相關參數介紹參照read.table

5 保存為.Rdata

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

save() #保存數據

load() #加載數據

> a <- 1:9 > save(a,file='E://dumData.Rdata')  > rm(a)   #將對象a從R中刪除  > load('d://dumData.Rdata')  > print(a)   [1]  1  2  3  4  5  6  7  8  9

 6 write.table()  #常用導出數據函數

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

參數解釋:

x: 要寫入的對象,最好是矩陣或數據框。如果不是,它是試圖強迫x到一個數據框。

file:  一個字符串命名文件或編寫而打開的一個連接。 " "表示輸出到控制臺。

append: 邏輯。只有當file是一個字符串才相關。

如果TRUE,輸出追加到文件;如果FALSE,任何現有文件的名稱被摧毀

quote:  一個邏輯值(TRUE或FALSE)或數字向量。如果TRUE,任何字符或因素列將用雙引號包圍。如果一個數值向量,其元素為引用的列的索引。在這兩種情況下,行和列名報價,如果他們被寫入。如果FALSE,並沒有被引用。

sep: 欄位分隔符字符串。每一行x中的值都被這個字符串分隔開。

row.names: 表示x的行名是否與x一起寫的邏輯值,或者是寫行名的字符向量

col.names: 類似row.names。

實例

> x <- c (22,23)> y <- c ("k", "j")> f <- data.frame (x = x, y = y)> f#   x y#1 22 k#2 23 j
#以空格分隔數據列(默認),含行號(默認),含列名(默認),字符串帶引號> write.table (f, file ="f.csv") 
#以逗號分隔數據列,含行號(默認),含列名(默認),字符串帶引號> write.table (f,file ="f.csv", sep =",")
#以逗號分隔數據列,不含行號,含列名(默認),字符串帶引號> write.table (f,file ="f.csv", sep =",", row.names = FALSE)
#以空格分隔數據列,不含行號,不含列名,字符串帶引號 > write.table (f,file ="f.csv", row.names = FALSE, col.names =FALSE)     #以空格分隔數據列,不含行號,不含列名,字符串不帶引號  > write.table (f,file ="f.csv", row.names = FALSE, col.names =FALSE, quote =FALSE)

7 CSV格式導出 #write.table的一種特定應用

通過函數write.csv()保存為一個.csv文件

write.csv()  #保存為一個.csv文件

> x <- c(1:3)> y <- c((1:3)/10)> z <- c("R and","Data Mining","Examples")  > df <- data.frame(x= x,y= y,z = z) > df#  x   y           z#1 1 0.1       R and#2 2 0.2 Data Mining#3 3 0.3    Examples> write.csv(df1,"E://dummmyData.csv",row.names = FALSE)  

以上是一些常用的數據輸入與輸出方法

其他方法可自行百度或在R軟體中使用「??函數名」獲得幫助

【推薦書籍】

相關焦點

  • C語言|字符型數據的輸入和輸出
    常用字符型數據的輸入輸出有兩種方式。 使用scanf()和printf()其中%c可以控制讀入或者輸出一個字符2.使用getchar()和putchar()getchar()和putchar()都是針對單個字符的輸入和輸出以上兩種方法都是針對單個字符進行操作,如果想要實現對連續的多個字符進行操作,可以採用循環調用的方式此外需要注意的是回車鍵通常也被當成一個字符
  • R語言實現數據離散化方法總結
    適應性,有些分類模型適合用離散化數據做為數據指標,比如決策樹雖然支持輸入連續型變量,但決策樹模型本身會先將連續型變量轉化為離散型變量,做邏輯回歸時,也通常會先把連續型特徵變量離散化,變成0或1。魯棒性,數據離散化會讓特徵變化不是特別明顯,特別是對於降低異常數據幹擾。穩定性,犧牲了數據的微小變化,但保證了模型的穩定性。
  • 認識Java類庫,實現基本的輸出與輸入
    課程導言【在上節課了解了變量的作用及如何聲明變量,本節課探討Java類庫以及基本的輸出與輸入。通過本課的學校,你將掌握如何輸出內容到控制臺,如何從獲得用戶從鍵盤輸入的數據,並了解類庫的使用方法】在程序運行過程中,既需要輸入數據,也需要輸出數據。例如,求長方形面積算法要求用戶輸入長方形的長度和寬度值,求出面積後,將結果輸出到控制臺。
  • RStudio|用R Markdown生成你的R語言數據分析報告
    由圖中我們可以看出Pandoc's Markdown  的一些文本格式規範和YAML渲染參數:●  雙虛線裡的內容規定了報告的標題、輸出格式。●  單星號*代表斜體字體,雙星號**代表加粗字體。報告中嵌入代碼塊(code chunks)R Markdown 中嵌入R代碼也是極其方便的。
  • R語言-初識與數據結構
    不但包括對象而且包含了對象的系統環境;當一次使用完畢要關閉R時,R會詢問是否保存工作空間軟體包 (Package): : 執行一定功能的函數、數據等的集合,一些內置於R系統內,大部分外置於網絡。4,R語言的工作方式命令行輸入按回車鍵執行。
  • R語言學習路線和常用數據挖掘包
    5.時間序列分析時間序列書籍的書籍分兩類,一種是比較普適的書籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。該書介紹了各種時間序列分析的經典方法及實現各種經典方法的R代碼,該書有中文版。
  • 編程模板-R語言腳本寫作:最簡單的統計與繪圖,包安裝、命令行參數解析、文件讀取、表格和矢量圖輸出
    個人認為:是否能熟悉使用Shell(項目流程搭建)+R(數據統計與可視化)+Perl/Python等(膠水語言,數據格式轉換,軟體間銜接)三門語言是一位合格生物信息工程師的標準。讀取輸入文件R用於作圖,讀入最多的是制表符分割的表格。我提供了使用rnorm生成的測試數據,並輸入了測試文件,其實這種方式在程序測試、教程和實驗分析對照中也是很常用的。同時提供了read.table讀取文件,或read.table(file.choose())彈窗選擇輸入文件兩種方式。4.
  • 輕鬆學會各種組學數據的R語言數據分析及作圖,發表文章
    本次學習通過手把手教學讓學員掌握R軟體下載安裝、Rstudio用法、常用醫學統計學算法模型R實現、R語言常用作圖、R語言數據處理方法與編程技術、掌握R語言自主學習實踐的方法與技巧,現場解答學員在實際工作中遇到的有關技術問題,讓學員更好地掌握相關技術的應用。另外,課後學員有感興趣的圖片,老師也可以提供相應的R代碼。
  • 關注 | R語言從入門到精通:Day4-R語言數據導入測試代碼及數據
    語言中的各種數據類型,幫大家複習一下,這些數據類型包括了向量(vector)、矩陣(matrix)、數組(array)、數據框(data.frame)和列表(list),還提到了因子(factor)。這些數據類型在我們運用R語言解決實際問題的時候都非常有用,在上節的例子中我們是在R裡面直接生成的數據,但是實際數據分析中,如何快速靈活的讀取和處理多種格式的外部數據呢?這節課的主要內容,我們就來講講R語言中數據的讀取。1、本節內容重點內容較多,      務必緊跟紅色標記。2、測試數據及代碼      見文末客服小姐姐二維碼。
  • R+ECharts2Shiny實現web動態交互式可視化數據(上)
    作者:糖甜甜甜,R語言中文社區專欄作者公眾號:經管人學數據分析
  • C語言-輸入與輸出函數
    眾所周知,C語言需要輸入和輸出,那麼今天小編我就帶領大家去學習這個編程必不可少的輸入和輸出函數。一,首先我們先來學習輸出函數(printf)其意義是:按指定的格式輸出值。因此,函數在括號中的參數都由以下兩部分組成:1、 格式控制串:格式控制串是一個字符串,必須用雙引號括起來,它表示了輸入輸出量的數據類型。在printf函數中可以在格式控制串內出現非格式控制字符,這時在顯示屏幕上會顯示源字符串。2、參數表:參數表中給出了輸出的變量。當有多個變量時,用英文逗號(,)分開。
  • 全棧數據之R語言常用包和函數
    全棧數據之路系列:全棧數據之Linux常用命令總結全棧數據之MySQL常用命令總結全棧數據之Python常用工具和函數《R語言實戰》,這是高濤、肖楠等翻譯的一本書詳細全面介紹了入門、圖形、統計、回歸、方差、功效分析、廣義線性模型、主成分、因子分析
  • R語言-stringr-字符串處理
    R包stringr處理字符相對簡單,尤其是我常用Power BI,但是對M語言不熟悉,不會處理字符數據,往往我就先利用R清洗字符數據列。本文記錄工作中常用的字符處理函數,部分案例照搬R for Data Science的字符部分。
  • R語言基礎教程——第1章:初識R
    除了圖形輸出是在另外的窗口處,它的輸入輸出窗口都是在同一個窗口進行的,輸入語法中如果出現錯誤會馬上在窗口口中得到提示,對以前輸入過的命令有記憶功能,可以隨時再現、編輯修改以滿足用戶的需要。輸出的圖形可以直接保存為JPG,BMP,PNG等圖片格式,還可以直接保存為PDF文件。另外,和其他程式語言和資料庫之間有很好的接口。
  • R語言數據實戰 | 數據讀入
    比如,首先可以用getwd()獲取R語言的工作目錄(這裡顯示的工作目錄在一個叫bear_read的文件夾中),然後當把數據movie.txt放入該文件夾時,就不需要再輸入長長的路徑,直接用文件名讀入就沒問題了。
  • C語言程序語句、格式輸出/輸入函數
    函數的應用要涉及定義、聲明、調用三個環節,c語言已經定義好若干函數供我們調用,因此,我們首先要學會調用函數。最簡單的程序也必須有輸出功能,同時還需要輸入功能,c程序系統已經定義好若干輸入/輸出函數,我們只需了解函數的原型(函數的名字、函數的返回值、參數個數和類型)以及他所在的頭文件就可以調用他們。
  • R語言 | 第一講:下載和安裝
    一.R簡介R是一種程式語言,對編程不太熟悉的人可能會望而卻步,這種思想障礙是完全沒有必要的.1.R是一種解釋型語言,也就意味著輸入的命令能夠直接被執行.4.R語言是開源軟體,代碼全部運行,對所有人免費開放.它可以在多種系統下運行,如Windows,MacOS,多種Linux和UNIX.R語言需要輸入命令,可以編寫函數和腳本進行批處理運算,語法簡單靈活.目前在R 網站上約有2100個程序包,涵蓋了基礎統計學,社會學,經濟學,生態學,地理學,醫學統計學,生物信息學等諸多方面.
  • NDK探究之旅《三》—C語言的輸入輸出函數
    NDK探究之旅《一》——對jni和NDK的認識NDK探究之旅《二》——C語言的基本認識有關於java的輸入輸出函數:C語言的輸出函數:我們先來看一下printf函數格式輸出,它是c語言中產生格式化輸出的函數(在 stdio.h 中定義)。用於向終端(顯示器、控制臺等)輸出字符。格式控制由要輸出的文字和數據格式說明組成。要輸出的的文字除了可以使用字母、數字、空格和一些數字符號以外,還可以使用一些轉義字符表示特殊的含義。4,作用:在c語言中產生格式化輸出的函數(定義在 stdio.h 中),其向終端(顯示器、控制臺等)輸出字符。
  • Day7:R語言課程 (R語言進行數據可視化)
    使用R base包提供的函數'mean()':mean(rpkm_ordered[,"sample1"])只想要其中一個樣本(數據框中的1列)的平均值,可以這樣實現,但要從所有12個樣本中獲取此信息該如何實現?程式語言通常有辦法允許多次執行代碼,或者在「循環」中執行。
  • c++的輸入與輸出
    c++輸入與輸出C++ 標準庫提供了一組豐富的輸入/輸出功能,本章將討論 C++ 編程中最基本和最常見的 I/O 操作。輸入輸出並不是c++語言的正式組成成分,c和c++沒有為輸入輸出提供專門的結構。在c語言中輸入輸出是通過調用scanf和printf 實現的,在c++中是通過調用流對象cin和cout實現的。