Unduh datanya.
download.file("https://raw.githubusercontent.com/ucdavis-bioinformatics-training/2022_February_Introduction_to_R_for_Bioinformatics/main/birthweight.csv", "birthweight.csv")
Entri data manual memakan waktu dan menyebabkan kesalahan. R memiliki sejumlah fungsi untuk membaca data dalam berbagai format. Mari kita gunakan read.csv()fungsi untuk membaca di spreadsheet yang berisi data dari eksperimen.
birthweight <- read.csv("birthweight.csv")
Selama analisis kami, kami akan menambahkan metrik ke kumpulan data ini. Ketika kami selesai, kami ingin dapat menyimpan analisis kami. Untuk menulis konten objek berat lahir ke CSV baru, kita bisa menggunakan write.csv()fungsi tersebut.
write.csv(birthweight, file = "new_birthweight.csv")
Yang serupa read.delim()dan write.delim()dapat digunakan untuk membaca dan menulis file yang dibatasi tab, di mana kolom dipisahkan oleh karakter tab, bukan koma.
Apa yang dimaksud dengan objek berat lahir? Di browser lingkungan, Anda akan melihat bahwa itu adalah “42 obs. dari 18 variabel.” Ini mungkin tabel data dengan 42 baris dan 18 kolom. Kita dapat memverifikasi ini menggunakan fungsi class()dan dim().
class(birthweight)
## [1] "data.frame"
dim(birthweight)
## [1] 42 18
Catatan tentang pemformatan: Dalam dokumentasi ini, baris yang diawali dengan ##adalah output dari kode R yang ditampilkan. Running dim(birthweight)bertanya kepada R berapakah dimensi benda berat lahir tersebut; jawabannya 42 (baris) x 21 (kolom). “[1]” bukan bagian dari output. Ini adalah indeks yang ditambahkan oleh R untuk membantu Anda melacak nilai ketika suatu operasi menghasilkan nilai dalam jumlah besar. Kita akan melihat contoh lain nanti yang diharapkan dapat memperjelas hal ini. Untuk saat ini, kita dapat mengabaikan “[1]” itu dengan aman.
Bingkai data mengatur data menjadi baris dan kolom. Objeknya harus berbentuk “persegi panjang”, dengan semua baris memiliki jumlah bidang yang sama, dan semua nilai dalam kolom harus bertipe sama.
Setiap kolom bingkai data adalah vektor . Vektor adalah kumpulan nilai-nilai yang bertipe sama.
Mari kita lihat isinya.
birthweight
## ID birth.date location length birthweight head.circumference
## 1 1107 1/25/1967 General 52 3.23 36
## 2 697 2/6/1967 Silver Hill 48 3.03 35
## 3 1683 2/14/1967 Silver Hill 53 3.35 33
## 4 27 3/9/1967 Silver Hill 53 3.55 37
## 5 1522 3/13/1967 Memorial 50 2.74 33
## 6 569 3/23/1967 Memorial 50 2.51 35
## 7 365 4/23/1967 Memorial 52 3.53 37
## 8 808 5/5/1967 Silver Hill 48 2.92 33
## 9 1369 6/4/1967 Silver Hill 49 3.18 34
## 10 1023 6/7/1967 Memorial 52 3.00 35
## 11 822 6/14/1967 Memorial 50 3.42 35
## 12 1272 6/20/1967 Memorial 53 2.75 32
## 13 1262 6/25/1967 Silver Hill 53 3.19 34
## 14 575 7/12/1967 Memorial 50 2.78 30
## 15 1016 7/13/1967 Silver Hill 53 4.32 36
## 16 792 9/7/1967 Memorial 53 3.64 38
## 17 820 10/7/1967 General 52 3.77 34
## 18 752 10/19/1967 General 49 3.32 36
## 19 619 11/1/1967 Memorial 52 3.41 33
## 20 1764 12/7/1967 Silver Hill 58 4.57 39
## 21 1081 12/14/1967 Silver Hill 54 3.63 38
## 22 516 1/8/1968 Silver Hill 47 2.66 33
## 23 272 1/10/1968 Memorial 52 3.86 36
## 24 321 1/21/1968 Silver Hill 48 3.11 33
## 25 1636 2/2/1968 Silver Hill 51 3.93 38
## 26 1360 2/16/1968 General 56 4.55 34
## 27 1388 2/22/1968 Memorial 51 3.14 33
## 28 1363 4/2/1968 General 48 2.37 30
## 29 1058 4/24/1968 Silver Hill 53 3.15 34
## 30 755 4/25/1968 Memorial 53 3.20 33
## 31 462 6/19/1968 Silver Hill 58 4.10 39
## 32 300 7/18/1968 Silver Hill 46 2.05 32
## 33 1088 7/24/1968 General 51 3.27 36
## 34 57 8/12/1968 Memorial 51 3.32 38
## 35 553 8/17/1968 Silver Hill 54 3.94 37
## 36 1191 9/7/1968 General 53 3.65 33
## 37 431 9/16/1968 Silver Hill 48 1.92 30
## 38 1313 9/27/1968 Silver Hill 43 2.65 32
## 39 1600 10/9/1968 General 53 2.90 34
## 40 532 10/25/1968 General 53 3.59 34
## 41 223 12/11/1968 General 50 3.87 33
## 42 1187 12/19/1968 Silver Hill 53 4.07 38
## weeks.gestation smoker maternal.age maternal.cigarettes maternal.height
## 1 38 no 31 0 164
## 2 39 no 27 0 162
## 3 41 no 27 0 164
## 4 41 yes 37 25 161
## 5 39 yes 21 17 156
## 6 39 yes 22 7 159
## 7 40 yes 26 25 170
## 8 34 no 26 0 167
## 9 38 yes 31 25 162
## 10 38 yes 30 12 165
## 11 38 no 20 0 157
## 12 40 yes 37 50 168
## 13 41 yes 27 35 163
## 14 37 yes 19 7 165
## 15 40 no 19 0 171
## 16 40 yes 20 2 170
## 17 40 no 24 0 157
## 18 40 yes 27 12 152
## 19 39 yes 23 25 181
## 20 41 yes 32 12 173
## 21 38 no 18 0 172
## 22 35 yes 20 35 170
## 23 39 yes 30 25 170
## 24 37 no 28 0 158
## 25 38 no 29 0 165
## 26 44 no 20 0 162
## 27 41 yes 22 7 160
## 28 37 yes 20 7 163
## 29 40 no 29 0 167
## 30 41 no 21 0 155
## 31 41 no 35 0 172
## 32 35 yes 41 7 166
## 33 40 no 24 0 168
## 34 39 yes 23 17 157
## 35 42 no 24 0 175
## 36 42 no 21 0 165
## 37 33 yes 20 7 161
## 38 33 no 24 0 149
## 39 39 no 19 0 165
## 40 40 yes 31 12 163
## 41 45 yes 28 25 163
## 42 44 no 20 0 174
## maternal.prepregnant.weight paternal.age paternal.education
## 1 57 NA NA
## 2 62 27 14
## 3 62 37 14
## 4 66 46 NA
## 5 53 24 12
## 6 52 23 14
## 7 62 30 10
## 8 64 25 12
## 9 57 32 16
## 10 64 38 14
## 11 48 22 14
## 12 61 31 16
## 13 51 31 16
## 14 60 20 14
## 15 62 19 12
## 16 59 24 12
## 17 50 31 16
## 18 48 37 12
## 19 69 23 16
## 20 70 38 14
## 21 50 20 12
## 22 57 23 12
## 23 78 40 16
## 24 54 39 10
## 25 61 NA NA
## 26 57 23 10
## 27 53 24 16
## 28 47 20 10
## 29 60 30 16
## 30 55 25 14
## 31 58 31 16
## 32 57 37 14
## 33 53 29 16
## 34 48 NA NA
## 35 66 30 12
## 36 61 21 10
## 37 50 20 10
## 38 45 26 16
## 39 57 NA NA
## 40 49 41 12
## 41 54 30 16
## 42 68 26 14
## paternal.cigarettes paternal.height low.birthweight geriatric.pregnancy
## 1 NA NA 0 FALSE
## 2 0 178 0 FALSE
## 3 0 170 0 FALSE
## 4 0 175 0 TRUE
## 5 7 179 0 FALSE
## 6 25 NA 1 FALSE
## 7 25 181 0 FALSE
## 8 25 175 0 FALSE
## 9 50 194 0 FALSE
## 10 50 180 0 FALSE
## 11 0 179 0 FALSE
## 12 0 173 0 TRUE
## 13 25 185 0 FALSE
## 14 0 183 0 FALSE
## 15 0 183 0 FALSE
## 16 12 185 0 FALSE
## 17 0 173 0 FALSE
## 18 25 170 0 FALSE
## 19 2 181 0 FALSE
## 20 25 180 0 FALSE
## 21 7 172 0 FALSE
## 22 50 186 1 FALSE
## 23 50 178 0 FALSE
## 24 0 171 0 FALSE
## 25 NA NA 0 FALSE
## 26 35 179 0 FALSE
## 27 12 176 0 FALSE
## 28 35 185 1 FALSE
## 29 NA 182 0 FALSE
## 30 25 183 0 FALSE
## 31 25 185 0 TRUE
## 32 25 173 1 TRUE
## 33 0 181 0 FALSE
## 34 NA NA 0 FALSE
## 35 0 184 0 FALSE
## 36 25 185 0 FALSE
## 37 35 180 1 FALSE
## 38 0 169 1 FALSE
## 39 NA NA 0 FALSE
## 40 50 191 0 FALSE
## 41 0 183 0 FALSE
## 42 25 189 0 FALSE
Format bingkai data akan terlihat familier. Ini sangat mirip dengan spreadsheet.
Secara umum, kami tidak ingin mengoperasikan seluruh frame data. Misalnya, untuk menghitung rata-rata berat badan lahir, kita tidak memerlukan informasi di kolom “pendidikan ayah”.
Ada tiga cara untuk membuat subset R pada bingkai data: $, [[, dan [.
Cara paling sederhana untuk mendapatkan semua nilai di kolom “berat lahir” adalah dengan operator $.
birthweight$birthweight
## [1] 3.23 3.03 3.35 3.55 2.74 2.51 3.53 2.92 3.18 3.00 3.42 2.75 3.19 2.78 4.32
## [16] 3.64 3.77 3.32 3.41 4.57 3.63 2.66 3.86 3.11 3.93 4.55 3.14 2.37 3.15 3.20
## [31] 4.10 2.05 3.27 3.32 3.94 3.65 1.92 2.65 2.90 3.59 3.87 4.07
Perhatikan bahwa sekarang ada tiga angka di dalam tanda kurung: satu di awal setiap baris keluaran. Ini adalah indeks (lokasi) dari angka berikut dalam vektor keluaran. Mereka memberi kita gambaran umum tentang panjang vektor, dan memungkinkan kita menentukan nilai pengamatan tertentu secara sekilas. Misalnya kita bisa menjawab pertanyaan “berapa berat lahir bayi ke-34?”
Setelah vektor berat badan lahir diekstraksi dari kerangka data lainnya, vektor tersebut dapat digunakan untuk menghitung mean.
mean(birthweight$birthweight)
## [1] 3.312857
Operator ini $merupakan pintasan untuk [[operator sub-pengaturan, yang mengharuskan pengetikan enam karakter tambahan (dua pasang tanda kurung siku dan sepasang tanda kutip). Mereka berfungsi dengan cara yang sama, mengembalikan nilai elemen bernama.
birthweight[["birthweight"]]
## [1] 3.23 3.03 3.35 3.55 2.74 2.51 3.53 2.92 3.18 3.00 3.42 2.75 3.19 2.78 4.32
## [16] 3.64 3.77 3.32 3.41 4.57 3.63 2.66 3.86 3.11 3.93 4.55 3.14 2.37 3.15 3.20
## [31] 4.10 2.05 3.27 3.32 3.94 3.65 1.92 2.65 2.90 3.59 3.87 4.07
mean(birthweight[["birthweight"]])
## [1] 3.312857
Satu perbedaan yang perlu diperhatikan adalah ketika [[bekerja dengan indeks, atau nomor kolom, $tidak.
# which column contains the birth weight?
# lines beginning with a '#' are comments, and are not executed by R
colnames(birthweight)
## [1] "ID" "birth.date"
## [3] "location" "length"
## [5] "birthweight" "head.circumference"
## [7] "weeks.gestation" "smoker"
## [9] "maternal.age" "maternal.cigarettes"
## [11] "maternal.height" "maternal.prepregnant.weight"
## [13] "paternal.age" "paternal.education"
## [15] "paternal.cigarettes" "paternal.height"
## [17] "low.birthweight" "geriatric.pregnancy"
birthweight[[5]]
## [1] 3.23 3.03 3.35 3.55 2.74 2.51 3.53 2.92 3.18 3.00 3.42 2.75 3.19 2.78 4.32
## [16] 3.64 3.77 3.32 3.41 4.57 3.63 2.66 3.86 3.11 3.93 4.55 3.14 2.37 3.15 3.20
## [31] 4.10 2.05 3.27 3.32 3.94 3.65 1.92 2.65 2.90 3.59 3.87 4.07
mean(birthweight[[5]])
## [1] 3.312857
birthweight$5