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"
データフレーム同士の結合
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 愛知県
指定した列の値が一致するもののみ取得する。
merge(tran, mst)
## id SKU pref
## 1 3 オレンジ 東京都
## 2 5 バナナ 愛知県
## 3 7 リンゴ 茨城県
指定した列の一致したデータだけでなく、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> 愛知県
指定した列の値が一致するだけでなく、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>
指定した列の値が一致するだけでなく、y のデータも取得する。
merge(x = tran, y = mst, by = "id", all.y = TRUE)
## id SKU pref
## 1 3 オレンジ 東京都
## 2 5 バナナ 愛知県
## 3 7 リンゴ 茨城県
## 4 11 <NA> 愛知県
結合するデータのすべての組み合わせを取得する。
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:引数に与えられたベクトルの順位を返す。
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
引数で指定したパーセンタイルで返す。
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
数値を並び替える。
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
カテゴリでの個数をカウントする。
# mtcars で気筒数をカウントする
table(mtcars$cyl)
##
## 4 6 8
## 11 7 14
x <- ftable(mtcars$cyl)
class(x)
## [1] "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
copyrigth © 2016 r-beginners.com All rigths reserved.
PAGE TOP ▲