More than 3 years have passed since last update.
0.はじめに
生物系の学問を専攻し、プログラミングに触れる機会がなかったのですが
「生物系でもRは使えたほうがいい」という友人のアドバイスをきっかけに
2019年12月からRにチャレンジしています。
まだまだ初学者で難しいコードは書けませんが、これからRを始める方々が生物系の実験で最低限使う統計ができる一助になれたらと思いこの記事を書き始めます!
0-1. こんな人に読んでほしい!
- Rに触れるのははじめて
- まじでプログラミングをやったことない
- 標準誤差やt検定などを学んだばかり
- 統計はRメインでやってみたい
0-2. この記事の到達目標
- 簡単なコードが打てる
- 四則演算ができる
- 変数をあつかうことができる
- データ型を理解する
0-3. 新しく登場する関数
class()- 引数(※)のデータ型を調べます。
as.character()- 引数を文字列に変換します。
as.numeric()- 引数を数値に変換します。
as.factor()- 引数を要因に変換します。
is.character()- 引数が文字列であるか確認します。
is.numeric()- 引数が数値であるか確認します。
is.factor()- 引数が要因であるか確認します。
※ 引数:括弧内に入れるもの
1. Rstudioのインストール
まずは、RとRstudioのインストールを行いましょう。
この作業については以下の記事様がお詳しいので、こちらをご覧ください。
2. 四則演算
Rでは電卓のような四則演算が可能です。電卓と異なるのは、すべてコードつまりプログラミング言語を用いて演算を行う点ですが、そう難しいことではありません。
まずはじめに、コンソール(コードを入力する画面)の>の場所に以下のコードを入力してください。
意外と重要なのは英数半角で入力することです。全角になっていないか気をつけてくださいね。
入力が打ち終わったらエンターキーを押し、実行してください。
[1]の後ろに2と表示されたら完璧です。[1]はあんまり気にしないでください。
>1+1[1]2和算だけでは面白くないですから、他にもいろいろやってみましょう。
和差積商の他にもカッコの計算や指数の計算も可能です。
>10-5[1]5>2*12[1]24>13/5[1]2.6>(1+2)*4[1]12>2^3[1]83. 変数を使ってみる
変数は非常に便利なものです。数学においてxやyにいろいろな数を代入したり、f(x)に関数を代入したりすることと似たようにプログラミングでも変数にいろいろ代入します。
まず、変数xに10を代入してみましょう。代入するときは<-という記号を用います。
>x<-10代入しただけだとなにも起こりませんが、変数名を入力して実行すると、代入されたものが実行されます。
>x[1]10さらにこのxにまた違う数を代入し、再度実行すると情報が上書きされていることがわかります。
>x<-100>x[1]100変数名はアルファベットを用いて自由につけることができます。1文字でもいいですし、単語でも大丈夫です。ただし、空白があるとエラーになってしまうので、変数名を区切りたいときはアンダーバー_などを用います。
変数に数字を代入した場合は、変数名同士で演算することも可能です。
小学生の文章問題をRでやってみるとこんな感じになります。
また、ここで登場する#以下の文章は、コメントといいわれるもので、コードを書いている最中のメモのような感じで書いています。コードの進行に影響はありません。
>#ミカンは1コ100円です。>price_of_mikan<-100>#リンゴは1コ200円です。>price_of_apple<-200>#ミカンを5コ、リンゴを3コ買いました。>number_of_mikan<-5>number_of_apple<-3>#あわせていくら?>total_price<-price_of_mikan*number_of_mikan+price_of_apple*number_of_apple>total_price[1]1100変数には数字以外にもコード、文字列、ベクトル、データフレーム等々いろいろなものを代入できます。文字列は次項、ベクトル等は次回で詳しく扱います。
>greeting<-"konnichiha">greeting[1]"konnichiha">vector<-c(1:3)>vector[1]1234. 基本的なデータ型
聞きなれない言葉だと思いますが、データ型とは見えない単位とでもいえばいいでしょうか。
例えば10というものは「リンゴが10個」や「長さが10㎝」など、数値を表すことがほとんどですが、場合によっては「10月」や「出席番号10番」など、固有名詞として扱う場合もあります。こうしたぱっと見ではわからない部分をデータ型という形で保持しています。「10月が10個で100月」なんて計算ができないように、データ型が異なるとうまくコードが実行できないなどの問題がしばしば発生しますので、よく理解しましょう。
ある変数や値のデータ型を知りたい場合は、class()関数を用いて調べることができます。()の中(引数と言います)に調べたいものを入力し、実行するとデータ型を返してくれます。
4-1. numeric 数値
numericはザ・数値で、実際の計測値や個数といったデータを保持します。R上で数字を打ち込むと基本的にはnumericとして認識されます。class()関数で確認してみますと
数値を入力した変数もまた、数値というデータ型を保持しています。
>class(10)[1]"numeric">x<-10>class(x)[1]"numeric"
4-2. character 文字列
R上で文字を打ち込んだとき、Rにとってはそれが変数名なのか文字列なのか判断できないので、人間がそれを指定する必要があります。
文字列を指定するときはダブルクオーテーション""でくくります。
""のないものは変数名として認識されています。
例えば、x<-10を実行した後、xは変数名として扱われるので、代入した10のnumeric型を保持しています。一方、"x"は変数ではなく、「x」という文字として扱われるのでcharacter型を保持しています。
>x<-10>class(x)[1]"numeric">class("x")[1]"character"例えば電話番号やシリアル番号など、入力した数値を文字列として読み込ませたい場合がしばしば生じます。その場合は、数値をあらかじめ""でくくるか、as.character()関数を使ってデータ型を文字列に変換する方法をとることができます。
やっぱり数値に戻したい、というときはas.numeric()関数で数値に変換できます。
>x<-"11122223333">class(x)[1]"character">#数値として代入>x<-11122223333>class(x)[1]"numeric">#文字列に変換後xに上書き>x<-as.character(x)>class(x)[1]"character">#数値に変換後xに上書き>x<-as.numeric(x)>class(x)[1]"numeric"
4-3. factor 要因
Rで統計を行う際に特に重要になります。ある数値データがどのグループに該当するのかを示すラベルの役割をします。以下の例だと、品目が値段という数値データのfactorに該当します。備考は品目と見た目上同じ文字ではありますが、グループを指定するわけではないのでfactorではありません。
| 品目 | 値段 | 備考 |
|---|---|---|
| みかん | 100 | 傷あり |
| みかん | 150 | A級品 |
| リンゴ | 200 | 'ジョナゴールド' |
| いちご | 300 | アメリカ産 |
単に文字列を""でくくっただけでは、factorとして認識してくれないので、as.factor()関数を使ってfactorとします。
>Item<-"mikan">class(Item)[1]"character">Item<-as.factor("mikan")>class(Item)[1]"factor"
4-4. logical 論理値
論理値はTRUEとFALSEからなります。使う機会は少ないと思いますが、関数の引数に指定したり、関数の出力結果として登場したりします。
is.numeric() is.character() is.factor()関数はそれぞれ引数が数値なのか文字列なのか要因なのかを確認する関数で、真であればTRUEを偽であればFALSEを返します。前項のItemについて確認してみます。Itemは先ほどas.factorでfactorにしたので、is.factor()でのみTUREが返されています。
>is.numeric(Item)[1]FALSE>is.character(Item)[1]FALSE>is.factor(Item)[1]TRUEまた、もう一つlogicalは面白い性質があり、TUREは1を、FALSEは0という値も持っており、四則演算できます。
>TRUE+FALSE+2*TRUE-10*FALSE[1]35.次回
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
