ベクトルと行列

c

ベクトルを作成する。combineの省略形

x <- c(1,2,3,4)
x
## [1] 1 2 3 4
class(x)
## [1] "numeric"

matrix

行列を作成する。

y <- matrix(1:9, nrow = 3, ncol = 3)
y
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
class(y)
## [1] "matrix"

データの型変換

length, dim, ncol, nrow

ベクトルの長さを求める、次元を求める、列数を求める、行数を求める。

str(mtcars, list.len = 0)
## 'data.frame':    32 obs. of  11 variables:
##   [list output truncated]
# ベクトルの長さ
length(mtcars)
## [1] 11
# 次元
dim(mtcars)
## [1] 32 11
# 列数
nrow(mtcars)
## [1] 32
# 行数
ncol(mtcars)
## [1] 11

cbind, rbind

列結合(行数一致が条件)、行結合(列名・データ型一致が条件)

# サンプルデータを条件抽出
x <- mtcars[mtcars["mpg"] >= 30.0,]
# 列の集約
x <- x[c(1,4,6)]
# kgに変換
wt_kg <- x$wt[] * 453.592
# 列追加
x <- cbind(x, wt_kg)
x
##                 mpg  hp    wt    wt_kg
## Fiat 128       32.4  66 2.200 997.9024
## Honda Civic    30.4  52 1.615 732.5511
## Toyota Corolla 33.9  65 1.835 832.3413
## Lotus Europa   30.4 113 1.513 686.2847
# 列データの作成(各列の平均を算出)
ttl <- c(mean(x$mpg),mean(x$hp),mean(x$wt),mean(x$wt_kg))
ttl
## [1]  31.77500  74.00000   1.79075 812.26987
# 行の追加
x <- rbind(x, ttl)
x
##                   mpg  hp      wt    wt_kg
## Fiat 128       32.400  66 2.20000 997.9024
## Honda Civic    30.400  52 1.61500 732.5511
## Toyota Corolla 33.900  65 1.83500 832.3413
## Lotus Europa   30.400 113 1.51300 686.2847
## 5              31.775  74 1.79075 812.2699

names, colnames, rownames

ベクトルには名前情報を属性としてつけられ、その名前で参照することができる。

# サンプルデータを条件抽出
x <- mtcars[mtcars["mpg"] >= 30.0,]
# 列の集約
x <- x[c(1,4,6)]
x
##                 mpg  hp    wt
## Fiat 128       32.4  66 2.200
## Honda Civic    30.4  52 1.615
## Toyota Corolla 33.9  65 1.835
## Lotus Europa   30.4 113 1.513
# 列名を変更
names(x) <- c("燃費","馬力","総重量")
x
##                燃費 馬力 総重量
## Fiat 128       32.4   66  2.200
## Honda Civic    30.4   52  1.615
## Toyota Corolla 33.9   65  1.835
## Lotus Europa   30.4  113  1.513
# 3列目の列名を取得
colnames(x[3])
## [1] "総重量"
# 3行目の行名を取得
rownames(x[3,])
## [1] "Toyota Corolla"

t

行列、ベクトル、データフレームを転置する。

# サンプルデータを条件抽出
x <- mtcars[mtcars["mpg"] >= 30.0,]
x
##                 mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Fiat 128       32.4   4 78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4 75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4 71.1  65 4.22 1.835 19.90  1  1    4    1
## Lotus Europa   30.4   4 95.1 113 3.77 1.513 16.90  1  1    5    2
t(x)
##      Fiat 128 Honda Civic Toyota Corolla Lotus Europa
## mpg     32.40      30.400         33.900       30.400
## cyl      4.00       4.000          4.000        4.000
## disp    78.70      75.700         71.100       95.100
## hp      66.00      52.000         65.000      113.000
## drat     4.08       4.930          4.220        3.770
## wt       2.20       1.615          1.835        1.513
## qsec    19.47      18.520         19.900       16.900
## vs       1.00       1.000          1.000        1.000
## am       1.00       1.000          1.000        1.000
## gear     4.00       4.000          4.000        5.000
## carb     1.00       2.000          1.000        2.000

diag

行列の対角方向の抽出

m <- matrix(1:25, ncol = 5)
m
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25
col(m) == row(m)
##       [,1]  [,2]  [,3]  [,4]  [,5]
## [1,]  TRUE FALSE FALSE FALSE FALSE
## [2,] FALSE  TRUE FALSE FALSE FALSE
## [3,] FALSE FALSE  TRUE FALSE FALSE
## [4,] FALSE FALSE FALSE  TRUE FALSE
## [5,] FALSE FALSE FALSE FALSE  TRUE
m[col(m) == row(m)]
## [1]  1  7 13 19 25
diag(m)
## [1]  1  7 13 19 25

sweep

ベクトル・行列・配列に対して、行(1)・列(2)方向に統計量を演算する。
例:sweep(df, MARGIN = 1, 1:3, “+”)

# サンプルデータを条件抽出
x <- mtcars[mtcars["mpg"] >= 30.0,]
# 列の集約
x <- x[c(1,4,6)]
x
##                 mpg  hp    wt
## Fiat 128       32.4  66 2.200
## Honda Civic    30.4  52 1.615
## Toyota Corolla 33.9  65 1.835
## Lotus Europa   30.4 113 1.513
sweep(x, 2, c(1.0, 10, 0.5), "+")
##                 mpg  hp    wt
## Fiat 128       33.4  76 2.700
## Honda Civic    31.4  62 2.115
## Toyota Corolla 34.9  75 2.335
## Lotus Europa   31.4 123 2.013
最終更新日:2016/04/27

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

PAGE TOP ▲