R語言資料輸入
可供R導入的資料源,文本檔案(txt、XML)、統計軟體(SPSS、SAS)、鍵盤、其他(Excel)、資料庫管理系統(SQL、MySQL)
在這裡,我打算挑一些常用的。
使用鍵盤輸入資料
兩種方式
1、R内置的文本編輯器,使用edit()函數。
2、直接在代碼中嵌入資料
第一種:R内置的文本編輯器,使用edit()函數
data data data #顯示data資料框
age weight gender
1 1 1 男
2 1 2 女
在這個對話框,我們可以給變量gender選擇變量類型,有numeric和character兩種類型。
輸入完資料,結果會儲存到之前指派的對象中data
第二種:直接在代碼中嵌入資料
可以參考之前推送的資料結構———下。裡面有詳細講解
從帶分隔符的文本檔案導入資料
文法:
data
file是帶分隔符.csv檔案,輸入該檔案的位址。notice!不要直接複制粘貼檔案路徑,不然會得到如下錯誤。
data 錯誤: 由""D:\R"開頭的字元串中存在'\R',但沒有這種逸出号
"\"在R語言被認為是轉義字元,應該改為"\"或者"/"才算正确。
options是控制如何處理的選項。
選項 | 描述 |
---|---|
header | 一個表示檔案是否在第一行包含了變量名的邏輯型變量 |
sep | 分開資料值的分隔符。預設是sep="",這表示了一個或多個空格、制表符、換行或回車。使用sep=","來讀取用逗号來分割行内資料的檔案,使用sep="\t"來讀取使用制表符來分割行内資料的檔案 |
row.mames | 一個用于指定一個或多個行标記符的可選參數 |
col.names | 如果資料檔案的第一行不包括變量名(header=FALSE),你可以用col.names去指定一個包含變量名的字元向量。如果header=FALSE以及col.names選型被省略了,變量會被分别指令為V1、V2,以此類推。 |
na.strings | 可選的用于表示缺失值的字元向量。比如說:na.strings=c("-9","?")。表示把-9和?值在讀取資料的時候轉換成NA |
colClasses | 可選的配置設定到每一列的類向量。比如說,colClasses=c("numberic","numberic","character","NULL","numberic")。把前兩列讀取為數值型向量,把第三列讀取為字元型向量,跳過第四列,第五列讀取為數值型向量,如果後面還有列,重複循環。可以預見到,在遇到大型資料的時候,colClasses可以顯著提高讀取效率。 |
quote | 用于對有特殊字元的字元串劃定界限的字元串,預設值是雙引号或單引号。 |
skip | 讀取資料前跳過的行的數目。這個選項在跳過頭注釋的時候比較有用 |
text | 一個指定文字進行處理的字元。如果text被設定了,file應該被留白。 |
這是Studentgrades.csv檔案的前幾行
StudentID,First,Last,Math,Science,Social Studies
011,Bob,Smith,90,80,59
012,Jane,Weath,69,58,85
013,Dan,"Wkfa III",85,67,83
045,Mary,"O'Leat",75,65,86
我們用讀取這個檔案
data data
First Last Math Science Social.Studies
11 Bob Smith 90 80 59
12 Jane Weath 69 NA 85
13 Dan Wkfa III 85 67 83
45 Mary O'Leat 75 65 86
str(data) #這個函數可以檢視資料框的資料結構
'data.frame': 4 obs. of 5 variables:First:Factorw/4levels"Bob","Dan","Jane",..:1324 Last : Factor w/ 4 levels "O'Leat","Smith",..: 2 3 4 1Math:int90698575 Science : int 80 NA 67 65
$ Social.Studies: int 59 85 83 86
變量名Social Studies被自動地根據R的習慣所重命名。列StudentID現在是行名,不再有标簽。Jane的缺失的科學課成績被正确地識别為缺失值NA。不得不用引号包住Wkfa III,否則R會在那一行讀出七個值,而不是六個。同時也不得不用引号包住O'Leat,否則R會把單引号讀取為分隔符。我的第一列前面的0也不見了。
有時候導入資料和你想要的資料總是會有偏差,你想把缺失的去掉,該出現的沒出現,改有的沒有。
在後面我們會講到把缺失值去掉,提取想要的資料,剔除不想要的資料。
預設的,read.table()把字元變量轉化為因子,這并不是我們想要的情況,在此,可以加上選項colClasses選項去對每一列都指定一個類
如下代碼,還是對Studentgrades.csv
data data
First Last Math Science Social.Studies
011 Bob Smith 90 80 59
012 Jane Weath 69 NA 85
013 Dan Wkfa,III 85 67 83
045 Mary O'Leat 75 65 86
str(data)
'data.frame': 4 obs. of 5 variables:First:chr"Bob""Jane""Dan""Mary" Last : chr "Smith" "Weath" "Wkfa,III" "O'Leat"Math:num90698575 Science : num 80 NA 67 65
$ Social.Studies: num 59 85 83 86 #行名保持了字首0,First和Last不再是因子,而是字元。
導入Excel資料
讀取一個Excel檔案最好的方式是在Excel中将其導出為逗号分隔檔案(.csv),并使用前面描述的那樣導入R中。
同時,有一個xlsx包直接地導入Excel工作表,相應的,你需要安裝Java包。
install.packages("xlsx") #安裝xlsx包
library("xlsx") #加載包
workbook mydataframe
今天的學習就到這裡,有問題的小夥伴背景留言,一起學習進步。