【R語言學習筆記】文件讀取和型別修改
阿新 • • 發佈:2019-01-23
今天偶然看到一個方法可以稍微提高下資料讀取和更改,在這裡把之前的笨方法和新方法一同記錄下。
首先,如果需要讀取文件,一般使用read.csv命令,而為了更好定位到文件位置,一般用choose.files(),比如我有一個CO2文件
choose.files()
顯示:
[1] "C:\\Users\\yangyunru\\Documents\\CO2.csv"
然後直接讀取
read.csv("C:\\Users\\yangyunru\\Documents\\CO2.csv",stringsAsFactors = F)
一般習慣加上stringsAsFactors = F 這段,不讓字串自動成為因子,因為會出現錯誤。
OK,到這比如針對一列的數字/字元進行因子轉化,這塊針對另一個例子,因為CO2這個資料集都是數字,沒有因子、
舉一個Arthritis資料集的例子,這個資料集在vcd包中。
library(vcd)
str(Arthritis)
看到這個資料集的結果是
'data.frame': 84 obs. of 5 variables:
$ ID : int 57 46 77 17 36 23 75 39 33 55 ...
$ Treatment: Factor w/ 2 levels "Placebo","Treated": 2 2 2 2 2 2 2 2 2 2 ...
$ Sex : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
$ Age : int 27 29 30 32 46 58 59 59 63 63 ...
$ Improved : Ord.factor w/ 3 levels "None"<"Some"<..: 2 1 1 3 3 3 1 3 1 1 ...
首先,這是個data.frame,然後有五個變數,分別為ID/Treatment/SEX/Age/Improved;看到ID是整數(int),Treatment、Sex是Factor,Age是整數,Improved是有序因子;
OK,如果這時候我想要改變裡面所有的因子成為數值,可以用一個笨方法:
Arthritis1<-Arthritis
Arthritis1$Treatment<-as.numeric(Arthritis1$Treatment)
Arthritis1$Sex<-as.numeric(Arthritis1$Sex)
Arthritis1$Improved<-as.numeric(Arthritis1$Improved)
這邊是因子轉化為數字,一般來說,有個需要修改的數字就有幾行程式碼,有點不夠簡潔。
下面用第二個稍微輕鬆的方法:transform函式
Arthritis2<-transform(Arthritis,
Improved=as.numeric(Improved),
Sex=as.numeric(Sex),
Treatment=as.numeric(Treatment)
)
一行程式碼就搞定,其實也是三行。。。。
但是面對因子多的時候,還是覺得第二種方法更簡潔。