library(tidyverse)この練習問題では、data/select.xlsxのファイルを利用します。
課題1:
data/select.xlsxファイルを読み込んでください。
解答1:
エクセルファイルなので、tidyverseに追加して、readxlパッケージも読み込んでおきましょう。
library(tidyverse)
library(readxl)
dat <- read_excel("data/select.xlsx")
dat# A tibble: 1 × 1
`このデータは健康診断データ(の列名だけを適当に作成したもの)です`
<chr>
1 ここを読み込んでしまった場合は、シート名の設定をやりなおしてみてください。
申し訳ありません。罠を仕掛けてみました。 エクセルファイルは、ファイルの中に、シー構造があるので、一番最初のシートが目とするデータでない場合は、読み込むシートを指定しあげる必要があります。 なので、正しいスクリプトは、
dat <- read_excel("data/select.xlsx", sheet="data")
dat# A tibble: 1 × 30
id sex age marrital_status occu_status pregnancy_status smoking_status
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 2 3 4 5 6 7
# ℹ 23 more variables: smoking_years <dbl>, smoking_number <dbl>,
# alcohol_status <dbl>, alcohol_frequency <dbl>, alcohol_volume <dbl>,
# kensa_ldl <dbl>, kensa_tg <dbl>, kensa_ast <dbl>,
# kensa_altkensa_glucose <dbl>, urine_glucose <dbl>, urine_protein <dbl>,
# q1 <dbl>, q2 <dbl>, q3 <dbl>, q4 <dbl>, q5 <dbl>, ecg1 <dbl>, ecg2 <dbl>,
# ecg3 <dbl>, chest_xp1 <dbl>, chest_xp2 <dbl>, chest_xp3 <dbl>,
# address <dbl>
となります。 コラム名が多数ありますが、tibbleだと、このよう1画面で全部の名前の確認が可能です。
また、
colnames(dat) [1] "id" "sex" "age"
[4] "marrital_status" "occu_status" "pregnancy_status"
[7] "smoking_status" "smoking_years" "smoking_number"
[10] "alcohol_status" "alcohol_frequency" "alcohol_volume"
[13] "kensa_ldl" "kensa_tg" "kensa_ast"
[16] "kensa_altkensa_glucose" "urine_glucose" "urine_protein"
[19] "q1" "q2" "q3"
[22] "q4" "q5" "ecg1"
[25] "ecg2" "ecg3" "chest_xp1"
[28] "chest_xp2" "chest_xp3" "address"
としてあげることで、コラム名をベクトルとしとりだすこともできるので、合わせて覚えおいてもよいかもしれません。
課題2: 最後のコラム、addressを、id,sex,ageの後 に移動させてください。
解答2:
これはeverything()を使ってあげる必要があります
dat2 <- dat %>%
select(id,sex,age, address, everything())あるいは、
dat2 <- dat %>%
select(id:age, address, everything())課題3:
id,sex,age,addressと喫煙に関するsmoking_, 飲酒に関するalcohol_ではじまる変数を選択してください
解答3:
dat3 <- dat2 %>%
select(id:address,
starts_with("smoking_"),
starts_with("alcohol_"))
dat3# A tibble: 1 × 10
id sex age address smoking_status smoking_years smoking_number
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 2 3 30 7 8 9
# ℹ 3 more variables: alcohol_status <dbl>, alcohol_frequency <dbl>,
# alcohol_volume <dbl>
課題4: idからaddressまでと、statusで終わる列を取得してください。ただし、smokingとalcoholで始まるものを除外してください。
解答4:
dat4 <- dat2 %>%
select(id:address, ends_with("_status")) %>%
select(!c(alcohol_status,smoking_status))
dat4# A tibble: 1 × 7
id sex age address marrital_status occu_status pregnancy_status
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 2 3 30 4 5 6
以上、select関数、慣れましたか?ここまでで、基本的な列の操作についての解説は終了です。次は行の操作にはいりたいのですが、そのまえに、基本事項を理解いただく必要がありますので、その解説をさせてください。