統計学

順序および表の作成

duplicated, unique

duplicated:データの重複をTRUE,FALSEで判定する。
unique:データの重複を取り除いてベクトルを返す。

x <- c("a","f","g","h","g","g")
x[duplicated(x)]
## [1] "g" "g"
duplicated(x)
## [1] FALSE FALSE FALSE FALSE  TRUE  TRUE
unique(x)
## [1] "a" "f" "g" "h"

merge

データフレーム同士の結合

tran <- data.frame(id = 1:8, SKU = c("リンゴ","バナナ","オレンジ","みかん","バナナ","みかん","リンゴ","リンゴ"))
mst <- data.frame(id = c(3,5,7,11), pref = c("東京都","愛知県","茨城県","愛知県"))
tran
##   id      SKU
## 1  1   リンゴ
## 2  2   バナナ
## 3  3 オレンジ
## 4  4   みかん
## 5  5   バナナ
## 6  6   みかん
## 7  7   リンゴ
## 8  8   リンゴ
mst
##   id   pref
## 1  3 東京都
## 2  5 愛知県
## 3  7 茨城県
## 4 11 愛知県

内部結合(inner.join)

指定した列の値が一致するもののみ取得する。

merge(tran, mst)
##   id      SKU   pref
## 1  3 オレンジ 東京都
## 2  5   バナナ 愛知県
## 3  7   リンゴ 茨城県

外部結合(outer.join)

指定した列の一致したデータだけでなく、x,yの一致していないデータも取得する。
該当するデータが無ければ、NAを表示する。

merge(x = tran, y = mst, by = "id", all = TRUE)
##   id      SKU   pref
## 1  1   リンゴ   <NA>
## 2  2   バナナ   <NA>
## 3  3 オレンジ 東京都
## 4  4   みかん   <NA>
## 5  5   バナナ 愛知県
## 6  6   みかん   <NA>
## 7  7   リンゴ 茨城県
## 8  8   リンゴ   <NA>
## 9 11     <NA> 愛知県

左結合(left.join)

指定した列の値が一致するだけでなく、x のデータも取得する。

merge(x = tran, y = mst, by = "id", all.x = TRUE)
##   id      SKU   pref
## 1  1   リンゴ   <NA>
## 2  2   バナナ   <NA>
## 3  3 オレンジ 東京都
## 4  4   みかん   <NA>
## 5  5   バナナ 愛知県
## 6  6   みかん   <NA>
## 7  7   リンゴ 茨城県
## 8  8   リンゴ   <NA>

右結合(right.join)

指定した列の値が一致するだけでなく、y のデータも取得する。

merge(x = tran, y = mst, by = "id", all.y = TRUE)
##   id      SKU   pref
## 1  3 オレンジ 東京都
## 2  5   バナナ 愛知県
## 3  7   リンゴ 茨城県
## 4 11     <NA> 愛知県

交差結合(cross.join)

結合するデータのすべての組み合わせを取得する。

merge(x = tran, y = mst, by = NULL)
##    id.x      SKU id.y   pref
## 1     1   リンゴ    3 東京都
## 2     2   バナナ    3 東京都
## 3     3 オレンジ    3 東京都
## 4     4   みかん    3 東京都
## 5     5   バナナ    3 東京都
## 6     6   みかん    3 東京都
## 7     7   リンゴ    3 東京都
## 8     8   リンゴ    3 東京都
## 9     1   リンゴ    5 愛知県
## 10    2   バナナ    5 愛知県
## 11    3 オレンジ    5 愛知県
## 12    4   みかん    5 愛知県
## 13    5   バナナ    5 愛知県
## 14    6   みかん    5 愛知県
## 15    7   リンゴ    5 愛知県
## 16    8   リンゴ    5 愛知県
## 17    1   リンゴ    7 茨城県
## 18    2   バナナ    7 茨城県
## 19    3 オレンジ    7 茨城県
## 20    4   みかん    7 茨城県
## 21    5   バナナ    7 茨城県
## 22    6   みかん    7 茨城県
## 23    7   リンゴ    7 茨城県
## 24    8   リンゴ    7 茨城県
## 25    1   リンゴ   11 愛知県
## 26    2   バナナ   11 愛知県
## 27    3 オレンジ   11 愛知県
## 28    4   みかん   11 愛知県
## 29    5   バナナ   11 愛知県
## 30    6   みかん   11 愛知県
## 31    7   リンゴ   11 愛知県
## 32    8   リンゴ   11 愛知県

order, rank

order:引数に与えられたベクトルの順序を返す。
rank:引数に与えられたベクトルの順位を返す。

m <- c(21,22,23,25,24)
order(m)
## [1] 1 2 3 5 4
rank(m)
## [1] 1 2 3 5 4
# 同じ値がある場合
n <- c(21,23,23,25,24)
order(n)
## [1] 1 2 3 5 4
# 同じ値があれば平均化される。
rank(n)
## [1] 1.0 2.5 2.5 5.0 4.0

quantile

引数で指定したパーセンタイルで返す。

x <- c(58,77,89,63,95,48,100)
#例えば四分位数(最小値・第一四分位・第三四分位・最大値)と中央値を求める
quantile(x, probs = c(0, 0.25, 0.5, 0.75, 1))
##    0%   25%   50%   75%  100% 
##  48.0  60.5  77.0  92.0 100.0

sort

数値を並び替える。
decreasing = TRUE,FALSE 降順,昇順 NAが含まれている場合は、na.rm = TRUE を指定

# 例えば、燃費の降順に列を表示する
sort(mtcars$mpg, decreasing = TRUE)
##  [1] 33.9 32.4 30.4 30.4 27.3 26.0 24.4 22.8 22.8 21.5 21.4 21.4 21.0 21.0
## [15] 19.7 19.2 19.2 18.7 18.1 17.8 17.3 16.4 15.8 15.5 15.2 15.2 15.0 14.7
## [29] 14.3 13.3 10.4 10.4
# 数値ベクトルを期待値に並べる
x <- c(2,3,6,4,5,1,3,4,2,1)
y <- c(6,5,4,3,2,1)
y[sort(order(y)[x])]
##  [1] 6 5 4 4 3 3 2 2 1 1

table

カテゴリでの個数をカウントする。

# mtcars で気筒数をカウントする
table(mtcars$cyl)
## 
##  4  6  8 
## 11  7 14
x <- ftable(mtcars$cyl)
class(x)
## [1] "ftable"

ftable

フラットなデータフレームをカテゴリ別に集計する。

# 気筒数と変速装置の分解能で前進ギヤ数の分布を見る
x <- ftable(mtcars[c("cyl", "am", "gear")])
x
##        gear  3  4  5
## cyl am              
## 4   0        1  2  0
##     1        0  6  2
## 6   0        2  2  0
##     1        0  2  1
## 8   0       12  0  0
##     1        0  0  2
最終更新日:2016/04/27

copyrigth © 2016 r-beginners.com All rigths reserved.

PAGE TOP ▲