2013年12月30日月曜日

Rの基本的な操作

このブログでは、R、Python、Java、PostgreSQLあたりの練習用メモとして使うつもり。
今日は、Rの基本的な操作をふりかえるつもりで書いてみる。
自分用なので、あまり体系的でない。

日本語もオブジェクト名にできる
> エックス <- 4 > エックス / 2 [1] 2
 みたいな感じ。これは、そんな使うことはないけど、知ってても悪くないかな程度。
オブジェクトをまとめる
> x <- c(30, 20) > x / 2 [1] 15 10
ベクトル
> y <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) > y <- 1:10 #コロンを使っても連続した整数を指定できる > y[1] #添え字指定でベクトルの最初の要素を抽出 [1] 1> y[1:3] #複数の添え字を指定 [1] 1 2 3
ベクトル演算
> x <- 1:5 > x + 1 #ベクトルに1を足す [1] 2 3 4 5 6
文字ベクトル 
> z <- c("A", "B", "C") #文字ベクトル > z[1] [1] "A"

要因 

> #要因(factor)は、カテゴリ変数などを表す > y <- factor(c("A", "B", "C")) > y [1] A B CLevels: A B C> str(y) #オブジェクトの構造を確認 Factor w/ 3 levels "A","B","C": 1 2 3> mode(y) #実態は数値である [1] "numeric"
行列 

> mat <- matrix(c(1, 2, 3, 4), nrow = 2)
> mat
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> 
> #横方向で要素を埋める指定をする
> mat <- matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)
> mat
     [,1] [,2]
[1,]    1    2
[2,] 3 4
> y <- data.frame( #適当に改行をおこなう、1行で入力しても同じ
+   english = c(45, 55, 65, 75, 85, 95),
+   math = c(50, 60, 70, 80, 90, 100)) #閉じ括弧の数に注意
> y[1, ] # 一行すべて抽出
  english math
1      45   50
> y[1:3, ] #3行目まで列を抽出
  english math
1      45   50
2      55   60
3      65   70
> y[2, "english"] #列名を引用符で囲って指定
[1] 55
> rownames(y) <- c("Michiko", "Taro", "Masako", "Jiro", "Aiko", "Kenta")# yの行番号を名前にする。
> y[-c(1,5),] #添え字にマイナス記号を使うと削除
       english math
Taro        55   60
Masako      65   70
Jiro        75   80
Kenta       95  100
>


> mean(y$math) # $マークでどの列名かを指定 
[1] 75> > attach(y) # attach関数でyを検索パスに登録することで$での指定なしでOK
> mean(math) [1] 75>  > y$phys <- c(47, 45, 23, 44, 21, 22) #データの追加もできる 

> y[rownames(y) == "Michiko", colnames(y) == "english"] <- 45 #列と行を指定してデータを入れ替えた。== は一致すればTRUE


ループ

> #ループ > x <- c("A", "B", "C") > for(i in 1:length(x)){ + print(x[i]) + } [1] "A"
[1] "B"
[1] "C"
> # lengthはオブジェクトの数だけ繰り返しを行う。 
データのいじり方を中心にふりかえってみた。
また、追加で覚えておきたいのは、加筆修正しよう。

0 件のコメント:

コメントを投稿