Kursus
- Subset Baris dan Kolom berdasarkan Indeks
- Subset Baris dan Kolom berdasarkan Nama
- Subset Baris dan Kolom berdasarkan Nilai
- Latihan Praktik
Baik saat Anda membandingkan bagaimana demografi berbeda merespons kampanye pemasaran, menyorot rentang waktu tertentu, atau mengambil informasi tentang beberapa produk terpilih dari inventaris, melakukan subset pada dataset memungkinkan Anda mengekstrak observasi yang berguna dari dataset Anda. R adalah alat yang hebat yang membuat proses subset data menjadi mudah dan intuitif. Di akhir tutorial ini, Anda akan tahu cara mengekstrak informasi yang Anda inginkan dari dataset Anda.
Melakukan subset pada data Anda tidak mengubah konten data tersebut, melainkan hanya memilih bagian yang paling relevan dengan tujuan Anda. Secara umum, ada tiga cara untuk melakukan subset baris dan kolom dataset Anda—berdasarkan indeks, berdasarkan nama, dan berdasarkan nilai.
Subset Baris dan Kolom berdasarkan Indeks
Salah satu cara untuk melakukan subset baris dan kolom adalah berdasarkan indeks dataset Anda. Ini sama seperti mendeskripsikan baris dan kolom sebagai "baris pertama", "semua baris pada kolom kedua dan kelima", atau "baris pertama pada kolom kedua hingga kelima". Mari kita spesifikasikan frasa tersebut menggunakan dataset bernama iris di R. Dari dokumentasinya, "dataset iris yang terkenal (Fisher atau Anderson) ini memberikan pengukuran dalam sentimeter untuk variabel panjang dan lebar sepal serta panjang dan lebar petal, masing-masing, untuk 50 bunga dari masing-masing 3 spesies iris. Spesiesnya adalah Iris setosa, versicolor, dan virginica."
# "The first row":
iris[1, ]
# "All rows in second and fifth columns":
iris[, c(2, 5)]
# "The first row in second to fifth columns":
iris[1, 2:5]
Untuk melakukan subset data Anda, tanda kurung siku digunakan setelah objek dataset Anda. Baris dataset Anda ditentukan sebagai elemen pertama di dalam tanda kurung siku, dan kolom dataset Anda ditentukan sebagai elemen kedua, dipisahkan oleh koma:
data[rows, columns]
Subset Baris dan Kolom berdasarkan Nama
Di R, baris dan kolom dalam dataset Anda memiliki atribut nama. Nama baris jarang digunakan dan secara bawaan memberikan indeks—bilangan bulat dari 1 hingga jumlah baris dalam dataset Anda—seperti yang Anda lihat pada bagian sebelumnya. Bahkan, jika Anda memanggil rownames() pada dataset iris, Anda akan melihat bahwa ini hanya diindeks dari 1 hingga 150:
> rownames(iris)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
[15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
[29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
[43] "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56"
[57] "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70"
[71] "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
[85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98"
[99] "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112"
[113] "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140"
[141] "141" "142" "143" "144" "145" "146" "147" "148" "149" "150"
> nrow(iris)
[1] 150
Nama baris lebih umum pada dataset kecil dan digunakan agar observasi dalam dataset Anda mudah diidentifikasi. Misalnya, untuk dataset kecil yang berisi informasi kesehatan pasien seorang dokter, nama baris dari dataset ini bisa berupa nama lengkap para pasien.
Nama kolom, di sisi lain, terdapat hampir di setiap dataset. Anda dapat mengaksesnya dengan fungsi colnames() atau fungsi names():
colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Untuk melakukan subset dataset Anda berdasarkan nama baris dan kolom, cukup gunakan kembali tanda kurung siku, yang diawali dengan objek dataset Anda:
# Sepal width dari observasi kelima
iris["5", "Sepal.Width"]
# Sepal width dan petal width
iris[, c("Sepal.Width", "Petal.Width")]
Penting untuk dicatat bahwa baik nama baris maupun nama kolom berupa karakter, jadi penggunaan tanda kutip tunggal atau ganda benar-benar diperlukan!
Subset Baris dan Kolom berdasarkan Nilai
Melakukan subset baris dan kolom berdasarkan nilai sering kali memberikan fleksibilitas paling besar. Misalnya, Anda dapat mengekstrak data tentang Iris setosa menggunakan pernyataan kondisional seperti ini:
> iris[iris$Species == "setosa", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
Pernyataan kondisional seperti iris$Species == "setosa" ditempatkan pada elemen baris dalam tanda kurung siku (yaitu elemen pertama sebelum koma). Selain pernyataan kondisional pada elemen pertama, Anda dapat menentukan kolom berdasarkan indeks atau nama pada elemen kedua. Pada konsol di bawah, coba pilih hanya pengukuran sepal untuk Iris setosa:
# Cetak pengukuran sepal untuk setosa
# Cetak pengukuran sepal untuk setosa (berdasarkan nama)
iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]
# Cetak pengukuran sepal untuk setosa (berdasarkan indeks)
iris[iris$Species == "setosa", 1:2]
test_or(
test_output_contains('iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]',
incorrect_msg = "Pilih hanya kolom Sepal.Length dan Sepal.Width untuk iris setosa, baik berdasarkan nama maupun indeks."), test_output_contains('iris[iris$Species == "setosa", c("Sepal.Width", "Sepal.Length")]', incorrect_msg = "Pilih hanya kolom Sepal.Length dan Sepal.Width untuk iris setosa, baik berdasarkan nama maupun indeks.")) success_msg("Kerja bagus!") Ringkasan
Dalam tutorial ini, Anda:
- Mempelajari cara melakukan subset data frame berdasarkan indeks. Baris dan kolom diindeks sebagai bilangan bulat dari 1 hingga jumlah baris dan kolom, masing-masing.
- Mempelajari cara melakukan subset data frame berdasarkan nama. Anda mempelajari bahwa nama baris jarang ditentukan, dan nama kolom bertipe karakter.
- Mempelajari penggunaan pernyataan kondisional pada elemen baris di dalam tanda kurung siku untuk melakukan subset data frame berdasarkan nilai.
- Mempelajari cara menggabungkan metode-metode ini untuk memungkinkan subset yang lebih fleksibel (misalnya, menggunakan kondisi untuk baris dan subset berdasarkan indeks atau nama untuk kolom).
Di bawah ini terdapat beberapa latihan untuk membantu memperkuat apa yang telah Anda pelajari. Latihan akan membuat Anda mahir, jadi cobalah!
Latihan Praktik
Pilih semua observasi di mana lebar sepal lebih besar daripada panjang petal.
# Observasi mana yang memiliki lebar sepal lebih besar daripada panjang petal?
# Observasi mana yang memiliki lebar sepal lebih besar daripada panjang petal?
iris[iris$Sepal.Width > iris$Petal.Length, ]
test_output_contains('iris[iris$Sepal.Width > iris$Petal.Length, ]',
incorrect_msg = paste("Pilih observasi di mana nilai Sepal.Width", "lebih besar daripada nilai Petal.Length.")) success_msg("Bagus! Ternyata hanya Iris setosa yang memiliki bentuk ini.")
iris$Sepal.Width > iris$Petal.Length di dalam tanda kurung siku. Jangan lupa komanya!Pilih semua Iris versicolor yang lebar sepalnya lebih besar daripada rata-rata lebar sepal di semua spesies.
# Simpan data versicolor sebagai objek bernama versicolor
# Pilih semua Iris versicolor yang memiliki lebar sepal di atas rata-rata
# Simpan data versicolor sebagai objek bernama versicolor
versicolor <- iris[iris$Species == "versicolor", ]
# Pilih semua Iris versicolor yang memiliki lebar sepal di atas rata-rata
versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]
test_object('versicolor',
undefined_msg = "Apakah Anda sudah mendefinisikan objek versicolor?", incorrect_msg = paste("Pilih di mana Species sama dengan \"versicolor\".", "Ingat untuk menggunakan operator ==!")) test_output_contains('versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]', incorrect_msg = paste("Belum tepat! Apakah Anda menggunakan fungsi mean()", "untuk mencari rata-rata lebar sepal di semua spesies", "dan bukan hanya untuk Iris versicolor?")) success_msg("Kerja bagus!")
mean() untuk mencari rata-rata lebar sepal pada iris, lalu gunakan pernyataan kondisional dengan awalan versicolor untuk memilih hanya yang nilainya di atas rata-rata.Laporkan rata-rata lebar sepal untuk semua Iris virginica yang memiliki panjang petal kurang dari 5 sentimeter.
# Anda bebas menyelesaikan masalah ini dengan cara apa pun!
# Simpan data virginica sebagai objek bernama virginica
virginica <- iris[iris$Species == "virginica", ]
# Rata-rata lebar sepal untuk Iris virginica yang panjang petalnya kurang dari 5
mean(virginica[virginica$Petal.Length < 5, ]$Sepal.Width)
test_output_contains('2.8',
incorrect_msg = "Tidak benar! Ini memang cukup menantang!")
success_msg("Sangat baik!")
Petal.Length kurang dari 5. Anda dapat mencari rata-ratanya dengan memanggil fungsi mean().Ingin mempelajari lebih banyak cara untuk mengekstrak wawasan dari data Anda? Lihat kursus-kursus ini di DataCamp!
Lihat juga tutorial kami Merging Datasets in R.
Baik saat Anda membandingkan bagaimana demografi berbeda merespons kampanye pemasaran, menyorot rentang waktu tertentu, atau mengambil informasi tentang beberapa produk terpilih dari inventaris, melakukan subset pada dataset memungkinkan Anda mengekstrak observasi yang berguna dari dataset Anda. R adalah alat yang hebat yang membuat proses subset data menjadi mudah dan intuitif. Di akhir tutorial ini, Anda akan tahu cara mengekstrak informasi yang Anda inginkan dari dataset Anda.
Melakukan subset pada data Anda tidak mengubah konten data tersebut, melainkan hanya memilih bagian yang paling relevan dengan tujuan Anda. Secara umum, ada tiga cara untuk melakukan subset baris dan kolom dataset Anda—berdasarkan indeks, berdasarkan nama, dan berdasarkan nilai.
Subset Baris dan Kolom berdasarkan Indeks
Salah satu cara untuk melakukan subset baris dan kolom adalah berdasarkan indeks dataset Anda. Ini sama seperti mendeskripsikan baris dan kolom sebagai "baris pertama", "semua baris pada kolom kedua dan kelima", atau "baris pertama pada kolom kedua hingga kelima". Mari kita spesifikasikan frasa tersebut menggunakan dataset bernama iris di R. Dari dokumentasinya, "dataset iris yang terkenal (Fisher atau Anderson) ini memberikan pengukuran dalam sentimeter untuk variabel panjang dan lebar sepal serta panjang dan lebar petal, masing-masing, untuk 50 bunga dari masing-masing 3 spesies iris. Spesiesnya adalah Iris setosa, versicolor, dan virginica."
# "The first row":
iris[1, ]
# "All rows in second and fifth columns":
iris[, c(2, 5)]
# "The first row in second to fifth columns":
iris[1, 2:5]
Untuk melakukan subset data Anda, tanda kurung siku digunakan setelah objek dataset Anda. Baris dataset Anda ditentukan sebagai elemen pertama di dalam tanda kurung siku, dan kolom dataset Anda ditentukan sebagai elemen kedua, dipisahkan oleh koma:
data[rows, columns]
Subset Baris dan Kolom berdasarkan Nama
Di R, baris dan kolom dalam dataset Anda memiliki atribut nama. Nama baris jarang digunakan dan secara bawaan memberikan indeks—bilangan bulat dari 1 hingga jumlah baris dalam dataset Anda—seperti yang Anda lihat pada bagian sebelumnya. Bahkan, jika Anda memanggil rownames() pada dataset iris, Anda akan melihat bahwa ini hanya diindeks dari 1 hingga 150:
> rownames(iris)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
[15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
[29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
[43] "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56"
[57] "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70"
[71] "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
[85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98"
[99] "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112"
[113] "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140"
[141] "141" "142" "143" "144" "145" "146" "147" "148" "149" "150"
> nrow(iris)
[1] 150
Nama baris lebih umum pada dataset kecil dan digunakan agar observasi dalam dataset Anda mudah diidentifikasi. Misalnya, untuk dataset kecil yang berisi informasi kesehatan pasien seorang dokter, nama baris dari dataset ini bisa berupa nama lengkap para pasien.
Nama kolom, di sisi lain, terdapat hampir di setiap dataset. Anda dapat mengaksesnya dengan fungsi colnames() atau fungsi names():
colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Untuk melakukan subset dataset Anda berdasarkan nama baris dan kolom, cukup gunakan kembali tanda kurung siku, yang diawali dengan objek dataset Anda:
# Sepal width dari observasi kelima
iris["5", "Sepal.Width"]
# Sepal width dan petal width
iris[, c("Sepal.Width", "Petal.Width")]
Penting untuk dicatat bahwa baik nama baris maupun nama kolom berupa karakter, jadi penggunaan tanda kutip tunggal atau ganda benar-benar diperlukan!
Subset Baris dan Kolom berdasarkan Nilai
Melakukan subset baris dan kolom berdasarkan nilai sering kali memberikan fleksibilitas paling besar. Misalnya, Anda dapat mengekstrak data tentang Iris setosa menggunakan pernyataan kondisional seperti ini:
> iris[iris$Species == "setosa", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
Pernyataan kondisional seperti iris$Species == "setosa" ditempatkan pada elemen baris dalam tanda kurung siku (yaitu elemen pertama sebelum koma). Selain pernyataan kondisional pada elemen pertama, Anda dapat menentukan kolom berdasarkan indeks atau nama pada elemen kedua. Pada konsol di bawah, coba pilih hanya pengukuran sepal untuk Iris setosa:
# Cetak pengukuran sepal untuk setosa
# Cetak pengukuran sepal untuk setosa (berdasarkan nama)
iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]
# Cetak pengukuran sepal untuk setosa (berdasarkan indeks)
iris[iris$Species == "setosa", 1:2]
test_or(
test_output_contains('iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]',
incorrect_msg = "Pilih hanya kolom Sepal.Length dan Sepal.Width untuk iris setosa, baik berdasarkan nama maupun indeks."), test_output_contains('iris[iris$Species == "setosa", c("Sepal.Width", "Sepal.Length")]', incorrect_msg = "Pilih hanya kolom Sepal.Length dan Sepal.Width untuk iris setosa, baik berdasarkan nama maupun indeks.")) success_msg("Kerja bagus!") Ringkasan
Dalam tutorial ini, Anda:
- Mempelajari cara melakukan subset data frame berdasarkan indeks. Baris dan kolom diindeks sebagai bilangan bulat dari 1 hingga jumlah baris dan kolom, masing-masing.
- Mempelajari cara melakukan subset data frame berdasarkan nama. Anda mempelajari bahwa nama baris jarang ditentukan, dan nama kolom bertipe karakter.
- Mempelajari penggunaan pernyataan kondisional pada elemen baris di dalam tanda kurung siku untuk melakukan subset data frame berdasarkan nilai.
- Mempelajari cara menggabungkan metode-metode ini untuk memungkinkan subset yang lebih fleksibel (misalnya, menggunakan kondisi untuk baris dan subset berdasarkan indeks atau nama untuk kolom).
Di bawah ini terdapat beberapa latihan untuk membantu memperkuat apa yang telah Anda pelajari. Latihan akan membuat Anda mahir, jadi cobalah!
Latihan Praktik
Pilih semua observasi di mana lebar sepal lebih besar daripada panjang petal.
# Observasi mana yang memiliki lebar sepal lebih besar daripada panjang petal?
# Observasi mana yang memiliki lebar sepal lebih besar daripada panjang petal?
iris[iris$Sepal.Width > iris$Petal.Length, ]
test_output_contains('iris[iris$Sepal.Width > iris$Petal.Length, ]',
incorrect_msg = paste("Pilih observasi di mana nilai Sepal.Width", "lebih besar daripada nilai Petal.Length.")) success_msg("Bagus! Ternyata hanya Iris setosa yang memiliki bentuk ini.")
iris$Sepal.Width > iris$Petal.Length di dalam tanda kurung siku. Jangan lupa komanya!Pilih semua Iris versicolor yang lebar sepalnya lebih besar daripada rata-rata lebar sepal di semua spesies.
# Simpan data versicolor sebagai objek bernama versicolor
# Pilih semua Iris versicolor yang memiliki lebar sepal di atas rata-rata
# Simpan data versicolor sebagai objek bernama versicolor
versicolor <- iris[iris$Species == "versicolor", ]
# Pilih semua Iris versicolor yang memiliki lebar sepal di atas rata-rata
versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]
test_object('versicolor',
undefined_msg = "Apakah Anda sudah mendefinisikan objek versicolor?", incorrect_msg = paste("Pilih di mana Species sama dengan \"versicolor\".", "Ingat untuk menggunakan operator ==!")) test_output_contains('versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]', incorrect_msg = paste("Belum tepat! Apakah Anda menggunakan fungsi mean()", "untuk mencari rata-rata lebar sepal di semua spesies", "dan bukan hanya untuk Iris versicolor?")) success_msg("Kerja bagus!")
mean() untuk mencari rata-rata lebar sepal pada iris, lalu gunakan pernyataan kondisional dengan awalan versicolor untuk memilih hanya yang nilainya di atas rata-rata.Laporkan rata-rata lebar sepal untuk semua Iris virginica yang memiliki panjang petal kurang dari 5 sentimeter.
# Anda bebas menyelesaikan masalah ini dengan cara apa pun!
# Simpan data virginica sebagai objek bernama virginica
virginica <- iris[iris$Species == "virginica", ]
# Rata-rata lebar sepal untuk Iris virginica yang panjang petalnya kurang dari 5
mean(virginica[virginica$Petal.Length < 5, ]$Sepal.Width)
test_output_contains('2.8',
incorrect_msg = "Tidak benar! Ini memang cukup menantang!")
success_msg("Sangat baik!")
Petal.Length kurang dari 5. Anda dapat mencari rata-ratanya dengan memanggil fungsi mean().Ingin mempelajari lebih banyak cara untuk mengekstrak wawasan dari data Anda? Lihat kursus-kursus ini di DataCamp!
Lihat juga tutorial kami Merging Datasets in R.
