今天偶然看到乙個方法可以稍微提高下資料讀取和更改,在這裡把之前的笨方法和新方法一同記錄下。
首先,如果需要讀取文件,一般使用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
4677
1736
2375
3933
55...
$ treatment: factor w/ 2 levels "placebo","treated": 222
2222
222...
$ *** : factor w/ 2 levels "female","male": 222
2222
222...
$ age : int 27
2930
3246
5859
5963
63...
$ improved : ord.factor w/ 3 levels "none"
<"some"
<..: 211
3331
311...
首先,這是個data.frame,然後有五個變數,分別為id/treatment/***/age/improved;看到id是整數(int),treatment、***是factor,age是整數,improved是有序因子;
ok,如果這時候我想要改變裡面所有的因子成為數值,可以用乙個笨方法:
arthritis1<-arthritis
arthritis1$treatment
<-as.numeric(arthritis1$treatment)
arthritis1$***
<-as.numeric(arthritis1$***)
arthritis1$improved
<-as.numeric(arthritis1$improved)
這邊是因子轉化為數字,一般來說,有個需要修改的數字就有幾行**,有點不夠簡潔。
下面用第二個稍微輕鬆的方法:transform函式
arthritis2<-transform(arthritis,
improved=as.numeric(improved),
***=as.numeric(***),
treatment=as.numeric(treatment)
)
一行**就搞定,其實也是三行。。。。
但是面對因子多的時候,還是覺得第二種方法更簡潔。
R語言學習筆記
1.資料輸入 read.table n fileposition 函式 eg.x read.table c users administrator desktop 1.txt header t 目前只知道可以完好地讀入txt檔案 空格隔開 excel不支援 csv讀入不完全。ps.可以用excel生...
R語言學習筆記
二 data.frame資料框的常用操作 三 讀取資料檔案 四 排序函式 sort,rank,order 的區別 mydata tid s1 s2 1 1 2 1 2 1 2 1 3 1 3 2 4 2 4 3 5 3 5 4 unique mydata tid s1 s2 1 1 2 1 3 1 ...
R語言學習筆記
r語言的特點 r網路資源 常用命令 安裝某個包 install.packages alr4 檢視函式用法 比如要實現t檢驗,可以輸入?t.test 然後重點看usage和example。也可以用help t.test lm函式名及所在包 fitting linear models標題 descrip...