R02:怎麼輸入資料

閱讀時間約 6 分鐘
我們上次提到怎麼安裝R,跟packages,我發現在剛學程式語言或是數據分析的時候,大部分的人學了一點基礎之後,都會想直接輸入數據,開始自己動手做,但是對於沒嘗試過programming的人來說,即便使用了IDE,第一個小障礙會是怎麼把不同數據輸入程式之中,好在R或者Rstudio要做這件事情十分方便,我今天想跟大家分享怎麼會入5種我常用的數據格式。影片的話我可能要等到周末才有空拍,先把Medium的文稿寫出來囉。我下面說這些東西其實stackoverflow或是基礎R教學一定都查得到,但是如果你是剛好看其他文章進來,又剛好想學R,那繼續看下去就對了。
在說怎麼輸入資料之前,我假設大家都是剛接觸R,先講一下怎麼指定檔案:
先假設檔案在我的Documents資料夾下,如果你使用linux base的機器不會有這個問題,但是如果使用window,你打開資料夾之後,通常去複製路徑會得到C:\Users\jhuang\Documents,但是要注意R的路徑呈現必須要相反方向,請看下面,target會是你的檔案,例如XXX.xlsx或者XXX.csv。
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
在這邊使用了一個sprintf的功能(function),你可以在R的指令列打?sprintf在右下角的那個help panel會告訴你sprintf怎麼使用,簡單來說,%s你會去替換的變數,這時候你file會得到整串檔案的位置,例如
> file
[1] "C:/Users/jhuang/Documents/target"
你當然也可以舉一反三增加多個變數。接下來就是要教你怎麼會入資料。
  • 大家最常使用的excel
一般來說,大部分的人最常使用readxl這個package來讀excel檔,所以最簡單的寫法應該是這樣
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
> library(readxl)
> data <- read_excel(file, sheet = "Sheet1", skip = 1, col_types = "numeric")
常用的option大概是這幾個sheet,你可以用數字指定第幾個sheet,或是直接給sheet的名字用引號包起來,skip就是你一開始想跳過幾列(row),col_types/col_name是可以指定每一行(column)的名稱跟型態。你如果想知道更詳細的說明就去點上面的連結。
  • csv, comma-separated values 檔案
第二種常見檔案是csv檔案,本身R就帶有read.csv可以使用,但是如過數據較大,read.csv的閱讀速度會很慢,寫法應該是這樣
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
> data <- read.csv(file,skip = 1, stringsAsFactors = F)
這邊skip用法一樣,介紹另外一個option,stringsAsFactors這會使得你在表中的文字(string)在輸入的過程中不會變成factor,其會造成初學者在處裡數據的複雜度。但是我剛說了read.csv很慢,那有沒有比較快的方法?有的,我會推薦read.table跟fread,我給大家參考網站,盡量自己去試試看,多寫才是你寫程式技巧進步的唯一方法,如果有任何問題,在下面留言我會盡量回答你。
  • text 或者 acsii 檔案
再來就處理純文字檔的部分,我本身沒有在R上面使用任何中文輸出輸入,如果有需要你可以到PTT去看怎麼使用中文優化。我本身是比較喜歡使用readLines,他的寫法其是跟上面沒有差多少,但是有多一個功能,你要讀幾列,你也可以用迴圈去寫出line by line的功能,這邊嘗試一個範例:
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
> data <- readLines(file,skip = 1, n = 100)
這就是說跳過第一列,然後連續讀一百列的數據。
  • netcdf 檔案
netcdf是氣象或是大氣科學家比較常用到的檔案,特色是如果某一個的數據是零他是不占空間,可以在多維度展開你的數據呈現,譬如像(x,y,z,t),去撿小檔案的大小。netcdf目前比較常用的是ncdf4,我們來看看怎麼使用吧:
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
> library(ncdf4)
> ncin <- nc_open(file) #import netcdf file
> LAT <- ncvar_get(ncin,"LAT") #use ncvar_get to extract LAT #variable from file
ncdf4的使用比較複雜,他的function比較多,加上數據結構也比較複雜,我之後有空要另外寫一篇文章,如果你非常需要學習怎麼使用R去輸入netcdf,直接留言,我會想辦法跟你聯絡。
  • 最後是RData
其實這個沒甚麼好講的就使用load,當你load之後,會在global environment得到別人寄給你的完整RData裡面的數據。
> path <- "C:/Users/jhuang/Documents"
> file <- sprintf("%s/target",path)
> load(file)
用文字書寫來做R教學果然難度不低,我盡量將簡單的部分加進去先,慢慢在擴充進階的使用。
為什麼會看到廣告
avatar-img
16會員
33內容數
小黃在美國生活十幾年,累積累積一堆生活上,研究所修課,找工作,工作上相關的資訊,我盡我所能跟大家分享,也希望聽見大家的反饋,Little Yellow in USA (LYUSA)
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Jiaoyan Huang的沙龍 的其他內容
現在這個時代,不管你是讀什麼科系,多多少少要會一點語言程式,用來做大量分析數據,或是幫你完成千篇一律重複性又高的工作,讓你有更多寶貴的時間去做更重要的想法發想、討論,重複性數據分析就交給電腦程式去執行,魯叔從大學到現在大概使用過Fortran(77、95、fixed、free,是我博班到博後使用
近期因為新冠狀病毒(中國共產黨病毒)肆虐,全球開始大規模在家工作(Work from home, WFH)的趨勢,剛好可以來聊聊我電腦中比較有用的程式或是網頁。 第一個當然就是AnyConnect VPN(Cisco),主要是用來連結家裡電腦跟公司網路,並可以使用公司網路裡面有的檔案位置等等。
先註明文章中的產品都是我自己用過推薦,沒有任何業配。 小孩子1–3歲的花費,在這邊是想用行住衣食育樂的順序來討論比較簡單
很多人都說美國生小孩很貴,這個話並不完全正確,生小孩的花費完全取決於你的保險、孕婦跟小孩的狀況,大部分人都有一個印象美國醫療花費不是那麼透明,而在生產的這件事情上,初為人父母的緊張常常造成對於醫療花費的無所適從,尤其事關小孩跟母親,我們通常只能做很侷限的選擇;重要的話先說在前面,打算要生小孩的前一
現在這個時代,不管你是讀什麼科系,多多少少要會一點語言程式,用來做大量分析數據,或是幫你完成千篇一律重複性又高的工作,讓你有更多寶貴的時間去做更重要的想法發想、討論,重複性數據分析就交給電腦程式去執行,魯叔從大學到現在大概使用過Fortran(77、95、fixed、free,是我博班到博後使用
近期因為新冠狀病毒(中國共產黨病毒)肆虐,全球開始大規模在家工作(Work from home, WFH)的趨勢,剛好可以來聊聊我電腦中比較有用的程式或是網頁。 第一個當然就是AnyConnect VPN(Cisco),主要是用來連結家裡電腦跟公司網路,並可以使用公司網路裡面有的檔案位置等等。
先註明文章中的產品都是我自己用過推薦,沒有任何業配。 小孩子1–3歲的花費,在這邊是想用行住衣食育樂的順序來討論比較簡單
很多人都說美國生小孩很貴,這個話並不完全正確,生小孩的花費完全取決於你的保險、孕婦跟小孩的狀況,大部分人都有一個印象美國醫療花費不是那麼透明,而在生產的這件事情上,初為人父母的緊張常常造成對於醫療花費的無所適從,尤其事關小孩跟母親,我們通常只能做很侷限的選擇;重要的話先說在前面,打算要生小孩的前一
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
因為工作的關係,需要在EXCEL產生和台股有關的資訊。 要抓取台股的方式有很多,譬如說用EXCEL 現在的功能從網頁匯入,但是畢竟愛寫程式的人就是因為懶,不想每次都用滑鼠點點點,所以就想要如何用VBA克服。 還好研究了一下,備齊以下幾個工具,就可以了。 (1)要有一個可以解析JSON格式的Li
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
因為工作的關係,需要在EXCEL產生和台股有關的資訊。 要抓取台股的方式有很多,譬如說用EXCEL 現在的功能從網頁匯入,但是畢竟愛寫程式的人就是因為懶,不想每次都用滑鼠點點點,所以就想要如何用VBA克服。 還好研究了一下,備齊以下幾個工具,就可以了。 (1)要有一個可以解析JSON格式的Li
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name