Mulailah dengan menyiapkan direktori kerja untuk kursus ini.

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.

3.1 Struktur bingkai data

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 [.

3.2 Memilih satu kolom menggunakan operator $ 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

the $ operator can’t take an index

birthweight$5