読者です 読者をやめる 読者になる 読者になる

株初心者が本気で儲けるブログ

株式投資に関連するテーマについて取り扱ってます。

【R言語】 Rにおけるデータの種類・型について  



Rのデータは入れ物(種類)と構造(型)で表現され、Rのデータの種類(class)はの主に下の5つに分類されます。


・ベクトル

・行列

・データフレーム

・リストーlist()オブジェクト

・環境ーnew.env()オブジェクト



データの種類が知りたいときはclass()で答えてくれます。

f:id:oruka199665:20161211002121p:plain


そして型は


数値型(numeric)--- 例: 3   1.23   Inf

論理型(logical)--- 例: TRUE   FALSE

文字型(character)---例: "apple"   "R is a programming language"

複素数型(complex)---例: 1.23+0.45i

因子型(factor)---統計で用いられる


の5種類あります。



ベクトル

c()で表わされます。ベクトルは1次元の配列なので同じ型のデータしか保存できません。(数値なら数値だけ文字列なら文字列だけしか保存できないということです)もし、c("b”,"3”)という数値と文字が混ざったベクトルがあった場合は"3"は文字列として扱われます。ベクトルの長所は一度に1つの要素ではなく、全ての要素を計算できるという事にあります。

f:id:oruka199665:20161211002730p:plain




行列

行列は2次元のベクトルで、ベクトルと同じように同じ型のデータしか保存できません。

f:id:oruka199665:20161211003339p:plain


デフォルトのmatrix()関数では入力データは列優先で組まれていくので、もし行を優先して作りたいときはmatrix()にbyrow=TRUEを追加します。

f:id:oruka199665:20161211003755p:plain


また行列はオブジェクトなので行の名前などの属性を持ち、その属性はコマンドで修飾することができます。

代表的なのがdimnames()というもので行と列に名前を付けられます

f:id:oruka199665:20161211004649p:plain


また[,]で行列から特定の要素を取り出すこともできます

この場合 a[1,4]と入れると7となる。




・data.frame

データフレームとは数字も文字もなんでも格納できる2次元のハイブリッドの入れ物で、Excelなどで読み込んだデータは大抵データフレームです。



データフレームも行列と同じように[,]演算子で特定の要素を取り出すことができます

> a<-matrix(rnorm(10),nrow=5)
> a
[,1] [,2]
[1,] -0.56303591 -0.0535828
[2,] 0.09508458 0.2532852
[3,] -1.06938201 1.6005082
[4,] -0.24893145 0.3756330
[5,] 0.90488600 0.1793538

> a[1,2]
[1] -0.0535828





・list()オブジェクト


リストは異なる型やサイズのオブジェクトを格納できる便利な入れ物です。


mylist<-list(a=c(1,2,3,4,5),
b=matrix(1:10,nrow=2,ncol=5),
c=data.frame(height=c(178,160,180),
type=c("one","two","three")))


> mylist
$a
[1] 1 2 3 4 5

$b
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10

$c
height type
1 178 one
2 160 two
3 180 three


・環境 new.env()


環境はデータ管理を効率よく行うためのデータの型で、プログラムの実行スピードの高速化に使われます。上級者向けのデータ構造なのでそこまで重要ではありません。一応どういうものかというと変数がオブジェクトを値で保存せずオブジェクトの位置でアドレスを保存することを意味し、大きなオブジェクトをいちいちコピーしなくて済むため効率的にデータ処理が行えます。


> a<-new.env()
> a"first"<-2
> a"second"<-4
> a


このように変数を入力しても現れるのは16進数のコードとなり、要素を入手するためにはgetコマンドを用います。


> get("first",envir=a)
[1] 2



ぶっちゃけ最低限のデータ処理はデータフレームが扱えればできますし、これはプログラミングが完璧にできてあとはいかに早く処理するかを考える人が使うものなのでパッケージをつくる時などには必要不可欠ですが、それを享受する側はこんなのがあるんだ程度の認識で問題ないです。


とりあえずここでRのデータには型と種類があることが理解できれば、それぞれの詳しい処理はRを使っていくにつれて分かってくるので大丈夫です。

Rをはじめるときに色々入門書を漁ったのですが、このデータの種類と型について詳しく解説せず回帰分析などに飛んでいく本が非常に多いのでここにメモっときます。これをちゃんと知らずにRをするのは、野球でいったらろくに素振りせずにいきなりバッティングしてるものなのでRの理解が進まないと思います。


データ処理とかでもサイトからコピペしたものをそのまま入力してるのに予想外のエラーが出るときは大抵データの種類が違うことが原因のように思います(経験談)


www.dmjtmj-stock.com