R 語言筆記

記錄一下今天用 R 撰寫因為統計需要的 scripts 遇到的問題。(雖然這些計算用 python 不消幾分鐘的事情... lol)


1. 常用指令:
    getwd(), setwd(), source() ...

2. 對於預設路徑的解決方法。由於直接開起 RGui 的話,預設路徑皆為 "C:\USERS\..."
    替代方法:
     1. 將 RGUI.EXE的路徑加入環境變數
     2. 使用 CMD CONSOLE, 在指定路徑下執行  RGUI.EXE

3. 讀取 CSV:
    read.csv("FILENAME")

4. 讀取某個column:
    若column name 簡單的話(像是 User, Quality, amount)
         ex. df#[COLUMN_NAME]
    或是透過涵式 colnames(df) 取得
         ex. colnames(df)

5. 檢查是否有 NA 值:
    is.na(df$QUALITY)
    *另外函數像 sum, max, mean都有參數可以讓 user 自動避掉 NA 值。(避掉而非刪除)
    ex. sum(QUALITY, na.rm=TRUE)

6. 針對 large size 的檔案讀取, 用一般 read.csv 或 read.table 效率極差。

myline <- scan("rawdata.csv", sep=",") # cost 2.6(s)
rm <- matrix(myline, length(myline)/3, 3, byrow=TRUE, )
dimnames(rm) <- list(NULL, c("user", "mid", "rank"))
class(rm) <- "numeric"
dfrm <- as.data.frame(rm) #若不作 matrix to dataframe 轉換, cast 會出錯
library(reshape)
mdata <- cast(dfrm, username~movieid, mean)  # cost 46.66(s)


INPUT (csv file) [輸入格式分別是 USER, ITEMID, RANKING, ...] (一共1015065個 items, 檔案 4.2MB)

1 3342 5.0
1 3294 4.5
X XXX X.X
N 23 3.5

OUTPUT

USER 3242 3294 XXX 23
1 5.0 4.5 ? ?
X ? ? X.X ?
N ? ? ? 3.5

7. 產生 random integer matrix
ex.  matrix(sample(10, 5,10), nrow=3, ncol=5)

8. 計算 standard deviation, mean by column
ex. apply(mydata, 2, sd); apply(mydata, 2, mean)
*注意: 2表示 column, 1表示 row



Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML