{{counter}} R !!!R.data {{outline}} !!サンプルデータ *Rをインストールした時点で、サンプルデータもインストールされている。 ** data() で一覧表示される。 *どんなデータか、その概要を知る ** str() でデータの概要が表示される > str(kimatsu) 'data.frame': 18 obs. of 2 variables: $ kokugo : num 83 45 73 50 22 67 77 89 66 90 ... $ suugaku: num 90 55 90 43 33 55 48 98 56 75 ... *グラフにして様子を見る ** plot() !!Rで扱うデータの種類 !ベクトル *プログラミングで言う「配列」 *「変数名」をつける *要素が入っている *変数名 <- c(要素をカンマで区切って並べる) **例:国語と数学の得点 **kokugo <- c(83, 45, 73, 50, 22) **suugaku <- c(90, 55, 90, 43, 33) *要素は前から順番に位置が決まっている *変数名をタイプすると内容が表示される > kokugo [1] 83 45 73 50 22 !データフレーム *プログラミングで言う「多次元配列」 *行が項目 *列が測定値 *複数のベクトルを合わせてデータフレームを作ることもできる *変数名 <- data.frame(ベクトル名をカンマで区切って並べる) **例:期末試験の得点(国語と数学) **kimatsu <- data.frame(kokugo, suugaku) *変数名をタイプすると内容が表示される >kimatsu kokugo suugaku 1 83 90 2 45 55 3 73 90 4 50 43 5 22 33 *個々のベクトルを指定するときは $ を使う **国語の得点 kimatsu$kokugo **数学の得点 kimatsu$suugaku *逆に、あるデータフレームの特定の列を取り出して、別のデータフレームにする icnaleMLS.MLT <- data.frame(icnale$MLS, icnale$MLT) !!事前にデータを作っておく *表計算ソフトなどで、テキストファイル(タブ区切りやCSV)で保存しておく。 *一件一行 *一番上の行は、変数名 *欠損値は NA と記入しておく *ファイルの読み込み **データフレーム名 <- read.table(choose.files()) **これでウインドウが開くのでどのファイルを読み込むか指定する !エクセルから「コピペ」することもできる +エクセル上でデータを一覧にしておく ++一番上の行は見出しとして行名を入れておく。これがRでも使われるので、簡潔な記号にしておくのがよい。 +取り入れたいデータ部分をマウスでドラッグして選び、Ctrl+Cとかでコピーする。 +ウィンドウをRに切り替えて、 +Rのコンソールで以下の命令を打って、実行(エンターキーを押す)。 データフレーム名 <- read.delim("clipboard") もしくは、 データフレーム名 <- read.table("clipboard", header=T) *データフレーム名は、Rの中でのデータの名前 *見出しの有り無しのデフォルトが、read.delimとread.tableで違うので注意 *見出しの一部を変更するには、要素番号で見出しを指定して上書きする。 > names(KSL)[3] <- "SL" **KSLというデータの3番目の見出しをSLに変更する例 !テキストファイル読み込み **一文一行ずつ読み込んで全体はベクトル。一文一行が一要素。 x <- readLines(choose.files()) x <- scan(choose.files(), what="char", sep="\n") !要素の比較 %in% x %in% y !!データの一部(サブセット)を取り出す:条件に当てはまるものだけを選ぶ <> subset(データフレーム名, 条件) *or 条件は | *and条件は & *文字のマッチは =="文字" !例 文長が4以上: SL >= 4 文長が4以上14以下: SL >=4 & SL <= 14 !該当するデータの特定の列だけを出力 subset(データフレーム名, 条件, 出力列) *出力列の例 select = c(MHD, MDD) KSL.sub <- subset(KSL, SL >=4 & SL <= 14, select = c(SL, MHD, MDD)) **文長が4以上14以下に該当するデータのうち、SLとMHDとMDDのカラムだけを取り出す。 !!データの一部(特定のカラム)を取り出す <> *いくつものカラムが並ぶデータの特定のカラムだけを使いたい場合 **連続していれば、データフレーム[,2:4] とすれば、2列目から4列目だけを取り出せる **非連続している場合は、data.frame()で、カラム名を指定して取り出す data.frame(x$ID, x$age, x$score) !!ファイルへの書き出し write(変数, "ファイル名", ncol=列数) write.table(データフレーム名, "ファイル名") write.csv(データフレーム名, "ファイル名.csv") !!データの操作 !変数を縦につなげる rbind(変数1, 変数2) !変数を横につなげる cbind() !!データを縦横に一連の同じ処理をする <> !行単位で処理:たとえば、平均点を出す apply(x, 1, 関数) !列単位で処理:たとえば、総合点を出す apply(x, 2, 関数) !!個々のオブジェクトをファイルに保存 !保存 save(オブジェクト, file="ファイル名.Rdata") !オブジェクトは、複数あってもよい save(オブジェクト, オブジェクト, オブジェクト, file="ファイル名.Rdata") !読み込み load("ファイル名.Rdata") 読み込んだ結果、もともとのオブジェクトがもともとのオブジェクト名で復元される。 !!読み込むときに別名にしたいとき !保存 saveRDS(オブジェクト, file="ファイル名.rds") !復元 readRDS(file="ファイル名.rds") 別名 <- readRDS(file="ファイル名.rds")