1. 程式人生 > >【R語言學習筆記】文件讀取和型別修改

【R語言學習筆記】文件讀取和型別修改

今天偶然看到一個方法可以稍微提高下資料讀取和更改,在這裡把之前的笨方法和新方法一同記錄下。

首先,如果需要讀取文件,一般使用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)
                      )

一行程式碼就搞定,其實也是三行。。。。

但是面對因子多的時候,還是覺得第二種方法更簡潔。