著者:少しヘルパー
出典:Dingdianがお手伝いします
今日からR言語で記述的な統計を行う方法を学び始めましょう。練習中に誰もが学びやすいように、次のデータをダウンロードできます。
ファイル名:titanic.csv
リンク:https://pan.baidu.com/s/1Pj0EsaBZdnw6mHPpeVd9Aw
パスワード:yuym
ローカルファイルをRにインポートします
データの管理と操作を容易にするために、通常、データを.csv形式で保存します。これは、Excelの比較的単純なデータ形式です。.csv形式のデータをRにインポートするには、関数read.csv()を使用できます。
#ローカルファイルtitanic.csvをRにインポートし、 #オブジェクトに保存しますtitanic <-read.csv( "// Users // Desktop // titanic.csv"、header = TRUE)
このローカルファイルには、1912年に大西洋に沈んだ巨大なクルーズ船タイタニックの乗客に関する基本情報が保存されていると仮定します。
「// Users // Desktop // titanic.csv」の上の最初のコマンドは、ファイルtitanic.csvのローカルストレージアドレスです。コンピューターの保存場所に応じて調整する必要があります。
2番目のコマンドヘッダー= TRUEは、元のファイルの最初の行をファイルの列名として自動的に設定することを意味します。
.csvファイルに列名がないが、Rのインポート後に列名を設定する場合は、2番目のコマンドをheader = FALSEに設定する必要があります。
データを理解する
前回の記事で述べたように、データベースを取得するには、まずその基本情報を理解する必要があります。以前にも言われましたが、簡単に復習しましょう。
class(titanic) #オブジェクトのデータ構造は何ですか[1] "data.frame" dim(titanic)# データに複数の行と列があります[1] 1309 6names(titanic)# データの列名を表示します[1] "pclass" "survived" "sex" "age" "sibsp" "parch" head(titanic)# 最初の6行を表示tail(titanic) # 最後の6行を表示
ご覧のとおり、タイタニックデータフレームには1309レコードと6変数があります。
6つの変数は、順番に、クラスのクラス、生き残ったかどうか、性別、年齢、同じグループの兄弟または配偶者の数、および同じグループの親または子の数です。
記述統計
次に、チタンデータの記述統計を行いましょう。
1.キャビンの各クラスには何人いますか?
2つのメソッドがあります。1つはカテゴリ変数pclassの各カテゴリの頻度をカウントするために使用されるtable()関数であり、もう1つは分類とカウント変数の両方に適した記述統計に使用されるsummary()関数です。カテゴリ変数の頻度をカウントするには、カウント変数の平均と百分位数などを計算します。
#メソッド1テーブル(titanic $ pclass)1st 2nd 3rd 323 277 709#メソッド2サマリー(titanic $ pclass)1st 2nd 3rd 323 277 709
2.犠牲者と生存者は何人でしたか?
table(titanic $ Survived) が生き残った 809500
3.キャビンの各クラスで何人が死亡し、何人が生き残ったのですか?
この例では、乗客の状態は「クラスのクラス」と「サバイバル」の2つの条件に従ってカウントされ、6つの可能性があります。それでも、table()関数を使用して、考えられる各状況にいる人数をカウントし、クロスコンティンジェンシーテーブルを生成します。
#ストアTAB1 TAB1で分割表 < -テーブル(タイタニック$は、タイタニック号の$ PCLASSを生き残っ) #ビューTAB1のTAB1の内容 第一第二第三は、死亡した 123 158 528を 生き延び 200 119 181
4.各クラスの生存者の割合はどれくらいですか?
考え方は単純です。つまり、各クラスの生存者数とそのクラスの合計人数の比率です。
1)各クラスの生存者数を計算する方法を見てみましょう。上記のtab1の2行目は、それらを抽出するためのものです。方法は、前述のようにデータフレームの行と列を抽出する方法と同じです。
#tab1の2行目を抽出tab1 [2、] 1st 2nd 3rd 200 119 181
2)各クラスの総人数は?上記も計算されています:
table(titanic $ pclass) 1st 2nd 3rd 323 277 709
apply()関数を使用する別のメソッドがあります。このメソッドは、マトリックスデータの行または列をバッチ処理します。
apply(tab1,2、sum) 1st 2nd 3rd 323 277 709
この関数には3つのコマンドがあります。最初のコマンドtab1は処理されるデータを表し、2番目のコマンド2はtab1の各列の処理を表し、各行を処理する必要がある場合、2番目のコマンドは数値1を入力する必要があります。3番目のコマンドsumは合計を表します。
したがって、上記の文の意味は次のとおりです。tab1の各列を合計します。つまり、各クラスの合計人数を計算します。
3)各クラスの生存者数とそのクラスの総人数の比率を求めます。
#メソッド1 tab1 [2、] / table(titanic $ pclass) 1st 2nd 3rd 0.6191950 0.4296029 0.2552891 #メソッド2 tab1 [2、] / apply(tab1,2、sum) 1st 2nd 3rd 0.6191950 0.4296029 0.2552891
4)この結果は非常に見苦しく、科学研究での報告には適していないことも発見したに違いありません。次の変更を行います。
#最初に100を掛け ますtab1 [2、] / apply(tab1,2、sum)* 100 1st 2nd 3rd 61.91950 42.96029 25.52891 #小数点以下2桁を 丸めます(tab1 [2、] / apply(tab1,2、sum)* 100 、2) 1番目2番目3 番目61.92 42.96 25.53
round()関数の関数は、小数点以下の桁数を保持することです。
上記のコードでは、最初のコマンドtab1 [2、] / apply(tab1,2、sum)* 100は、小数を保持する必要があるオブジェクトです。
2番目のコマンド2は、小数点以下2桁を保持することを意味します。
5)しかし、この結果は明らかに間違っており、パーセント記号%を追加することは正確です。paste()関数を使用する必要があります。この関数の関数は、さまざまな要素を接続することです。この例では、数字とパーセント記号を接続します。
paste(round(tab1 [2、] / apply(tab1,2、sum)* 100,2)、 "%"、sep = "") "61.92%" "42.96%" "25.53%"
最初のコマンドround(tab1 [2、] / apply(tab1,2、sum)* 100,2)は、上記で計算されたパーセンテージの数値部分であり、最初に接続される部分です。
2番目のコマンド "%"は、接続される2番目の部分です。
3番目のコマンドsep = ""は、2つの要素間の接続記号を参照します。ここでは接続記号は必要ないため、引用符 ""の間に何も記述する必要はありません。