データ分析

【Rその4】ベクトルの作成と計算

投稿日:

ベクトルを一言で言うと、複数の値を要素として持つオブジェクトです。プログラミング言語を学んだ方であれば、配列と同じと考えてもらえば分かりやすいかもしれません。

 

ベクトルをつくってみましょう

> x <- c(10,20,30) # 3つの数値を持つベクトルを作成
> 
> x[1] #1番目の要素を抽出
[1] 10
> x[2] #2番目の要素を抽出
[1] 20
> x[1:3] #1~3番目の要素を抽出
[1] 10 20 30
> x[c(1,3)] #1と3番目の要素を抽出
[1] 10 30
> x[-c(1,3)] #1と3番目の要素を除いて抽出
[1] 20
>

 

上記のように、ベクトルは順番を指定して要素を自由に参照することができます。次に、異なるデータ型のオブジェクトを1つのベクトルにまとめるとどうなるか見てみましょう。

> x <- c("a",1i,1,TRUE) # 複数のデータ型を持つベクトル
> x
[1] "a"    "0+1i" "1"    "TRUE"
> typeof(x) #オブジェクトタイプを確認
[1] "character"
> 
> 
> x <- c(1i,1,TRUE) # 複数のデータ型を持つベクトル
> x
[1] 0+1i 1+0i 1+0i
> typeof(x) #オブジェクトタイプを確認
[1] "complex"
> 
> 
> x <- c(1,TRUE) # 複数のデータ型を持つベクトル
> x
[1] 1 1
> typeof(x) #オブジェクトタイプを確認
[1] "double"
> 
> 
> x <- c(TRUE) # 複数のデータ型を持つベクトル
> x
[1] TRUE
> typeof(x) #オブジェクトタイプを確認
[1] "logical"
>

 

上記のように、1つのベクトルに異なるデータ型があると強制的に一つのデータ型に変換されます。どのデータ型が優先されるかは、データ型の表現力に依存します。具体的には、下記の表に示す順番に従って優先的に強制変換されます。

順位データ型内容
1character文字型
2complex複素数型
3double実数型
4logical論理型

 

ベクトルの要素に名前を付ける

> x <- c(1,2,3) #ベクトルを作成
> x
[1] 1 2 3
> 
> names(x) <- c("A","B","C") #要素に名前を付ける
> x
A B C 
1 2 3 
> 
> x[c("B")] #名前を指定して要素を抽出
B 
2 
>

 

ベクトルに1を足すとどうなるか

> x <- 1:5 #1~5の数値を持つベクトルを作成
> x #ベクトルを表示
[1] 1 2 3 4 5
> sum(x) #ベクトルの要素を合計
[1] 15
> 
> x <- x + 1 #ベクトルに1を足す
> x #全ての要素に1が足されていることが分かる
[1] 2 3 4 5 6
> sum(x) #ベクトルの要素を合計
[1] 20
>

ベクトルに1を足すと、すべての要素に1が足されましたね。例えば、この処理を他のプログラミング言語でやろうとすると、for文などを使った繰り返し処理が必要になります。一方、Rではベクトルの機能により、その繰り返し処理を省略できます。これが後にデータの整形や集計に非常に役に立ってきます。

他の演算子でも試してみましょう。

> x <- 1:10 #1~10の数値を持つベクトルを作成
> x #ベクトルを表示
 [1]  1  2  3  4  5  6  7  8  9 10
> 
> x + 1 #加
 [1]  2  3  4  5  6  7  8  9 10 11
> x - 1 #減
 [1] 0 1 2 3 4 5 6 7 8 9
> x * 10 #乗
 [1]  10  20  30  40  50  60  70  80  90 100
> x / 10 #徐
 [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> x^2 #べき乗
 [1]   1   4   9  16  25  36  49  64  81 100
> x %/% 10 #整数除算
 [1] 0 0 0 0 0 0 0 0 0 1
> x %% 10 #剰余(割った余り)
 [1] 1 2 3 4 5 6 7 8 9 0
> 
> x == 5
 [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
> x != 5
 [1]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
> x > 5
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
> x >= 5
 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
> x < 5
 [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
> 5 <= 5
[1] TRUE
> 
> x[ x > 5 ] #抽出
[1]  6  7  8  9 10
>

 

次回はいろいろなベクトルの作成方法を理解しましょう。

-データ分析

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

R 列名を変更する

【目的】 列名を変更する 【方法】 rename(df, after = before) 【補足】 library(dplyr)が必要   #テスト用データフレーム作成   v.x1 <- c( …

【Rその2】最初の一歩。オブジェクトを理解する。

Contents1 オブジェクトとは2 関数とは オブジェクトとは Rでは、数字や文字列、関数などをオブジェクトという単位で利用します。では、どのように利用するのでしょうか。具体的に見ていきます。 下 …

【BigQuery】CSVで出力すると時間区切り「T」がスペースになる問題

Contents1 時間区切りのTとは何か?2 CSVで出力すると時間区切りのTがスペースになる??3 スプレッドシートで出力して解決? 時間区切りのTとは何か? 例えば、下記の時間を見ると、 202 …

【Rその3】オブジェクトのタイプを理解する

前回、Rのはじめの一歩として、オブジェクトについて理解しました。今回は、オブジェクトのタイプについて説明します。   Contents1 オブジェクトのタイプとは?2 主なデータ型3 例 オ …

【Rその1】Rとは何か

Contents1 Rとは何か?2 Rでできること3 Rのインストール Rとは何か?   一言で言えば、大規模データ処理にも対応した無料の統計解析ソフトです。 最近では、Pythonにシェア …

ブログ運営者:Arakazu(あらかず)

アニメ・マンガ、最新の芸能・スポーツネタが好きな、福岡県出身の30代男性です。

普段はスマホやiPadで、通勤途中やお風呂の中など、いろんなところで動画や電子書籍サービスを使い倒して遊んでます♪

イチオシは、バスケ漫画の異色作品「あひるの空」ですね!(アニメが2019年10月から放送されているので、再びハマっているんです)

最近盛り上がってきてる「Hulu(フールー)」などの動画配信サービスは、1か月間くらい無料で見放題、タダで楽しめるので、もうYouTubeいらないかもと思っています。

おもしろいアニメやマンガのネタバレや感想、

タダで使えて面白い動画配信サービスも紹介しているので、ぜひ楽しんでいってくださいね(^^♪