久しぶりRを触ったら、データフレームの操作が驚くほどできなくなっていたので改めてデータフレームの操作に使う関数を自分なりにまとめてみます。
> 〇〇<-read.csv(“〇〇.csv“) ##csvの読みこんでオブジェクトに保存する
なんかread.csvでうまくcsvが取り込めないときはread.tableを使うのもアリ
>〇〇<-read.table(“〇〇”)
一応これがなんのデータかというとバンナムの株価データです。(bannamと名付けたオブジェクトに入れておきます)
まずヘッダーの名前が見にくいので変えます。名前を変えるにはnames()関数を使います。
>names(bannam)<-c(“Open”,”High”,”Low”,”Close”,”Volume”,”adj_close”) ##ヘッダーの名前変更
特定の要素の取り出しは演算子[,]を使う
>bannam[1,4]
[1] 2981
他にも$演算子で取り出すことも可能。
> close<-bannam$close
> head(close)
[1] 2993 3080 3000 3050 3055 3075
・行数と列数を指定してデータを取り出す方法
> bannam[1:4,c(1,5)] ##1列目と5列目の1~4行目を取り出す。
date close
1 2016-11-11 2993
2 2016-11-10 3080
3 2016-11-09 3000
4 2016-11-08 3050
前半が「行」の指定、後半が「列」の指定をしている。1番目から4連目みたいな連番だと「:」で指定できるが、1番目と3番目だけなどの特定の番目を取り出したいときは「,」で指定しなければならない。
「行」と「列」がゲシュタルト崩壊しそうなときは、行列は縦横(行は↓、列は→)と覚えておくと、記憶に残りやすい。
・特定の行列の削除のやり方
>bannam[,-2] ##2列目の削除
> bannam[,-2]
date high low close volume adj_close
1 2016-11-11 3105 2981 2993 1194800 2993
2 2016-11-10 3130 3060 3080 1496800 3080
>bannam[,c(-2,-4)] ##2列目と4列目を削除
・特定の条件を満たす行の抽出
条件に当てはまる行のみを抽出する場合は、subset(オブジェクト名,条件式)を使う。
> subset(bannam, close>3050) ##closeが3050以上を抽出する
date open high low close volume adj_close
2 2016-11-10 3120 3130 3060 3080 1496800 3080
5 2016-11-07 3100 3105 3055 3055 743700 3055
6 2016-11-04 3025 3080 3015 3075 1007200 3075
7 2016-11-02 3110 3110 3045 3055 796800 3055
8 2016-11-01 3155 3160 3125 3140 666000 3140
> summary(bannam) ##データの要約
コメント