Anda di halaman 1dari 7

Bab 19

Sepuluh Hal yang Dapat Anda Lakukan


R Yang Akan Anda Lakukan di Microsoft Excel
Dalam Bab Ini
▶▶ Melakukan penghitungan dan operasi lainnya pada data
▶▶ Melampaui apa yang dapat Anda lakukan dalam spreadsheet
 
spreadsheet mungkin salah satu aplikasi PC yang paling banyak digunakan -
dan untuk alasan yang bagus: Spreadsheet sangat memudahkan untuk melakukan penghitungan
dan operasi lainnya pada data tabel. Tetapi spreadsheet memiliki beberapa risiko
juga: Mereka mudah rusak dan sangat sulit untuk di-debug.

Kabar baiknya adalah, Anda dapat menggunakan R untuk melakukan banyak hal yang sama seperti dulu
lakukan di spreadsheet. Di R, Anda menggunakan bingkai data untuk merepresentasikan data tabular. R
memiliki banyak fungsi, operator, dan metode yang memungkinkan Anda untuk memanipulasi
dan menghitung pada bingkai data. Ini berarti Anda dapat melakukan apa saja
(dan lebih banyak lagi) di R yang akan Anda lakukan di Microsoft Excel, LibreOffice Calc,
atau aplikasi spreadsheet favorit Anda.
 
Dalam bab ini, kami menawarkan beberapa petunjuk tentang fungsi yang dapat Anda jelajahi di R,
sebagian besar dibahas di awal buku ini. Dalam banyak kasus, kami menyediakan beberapa
kode contoh tetapi bukan hasilnya. Coba sendiri contoh-contoh ini, dan ingatlah
untuk menggunakan dokumentasi R Help untuk mengetahui lebih lanjut tentang fungsi-fungsi ini.

Menambahkan Total Baris dan Kolom


Salah satu tugas yang mungkin sering Anda lakukan dalam spreadsheet adalah menghitung baris atau
total kolom. Cara termudah untuk melakukannya adalah dengan menggunakan fungsi rowSums ()
dan colSums () . Demikian pula, gunakan rowMeans () dan colMeans () untuk menghitung
cara.
 
Cobalah built - dalam dataset iris . Pertama, hapus kolom kelima, karena itu
berisi teks yang menjelaskan spesies iris:
 
> iris.num <- iris [, -5]
 
Kemudian hitung jumlah dan mean untuk setiap kolom:
 
> colSums (iris.num)
> colMeans (iris.num)
 
Kedua fungsi ini sangat nyaman dalam pengoprasian, tetapi mungkin ingin menghitungnya
beberapa statistik lain untuk setiap kolom atau baris. Ada cara mudah untuk melakukan traverse
baris atau kolom dari larik atau bingkai data: fungsi apply () (lihat
Bab 13). Misalnya, mendapatkan minimum kolom sama dengan
menerapkan fungsi min () ke dimensi kedua dari data:
 
> terapkan (iris.num, 2, min)
> terapkan (iris.num, 2, maks)
 
Fungsi apply () ideal ketika data Anda berada dalam array dan akan diterapkan
dengan baik atas kedua baris dan kolom. Untuk kasus khusus di mana data
berada dalam bingkai data dan kita ingin mendapatkan ringkasan kolom, lebih baik
menggunakan sapply () daripada apply () . Jadi, untuk mendapatkan ringkasan kolom iris kita ,
coba ini sebagai gantinya:
 
> sapply (iris.num, min)
> sapply (iris.num, maks)
 
Memformat Angka
Saat Anda membuat laporan, Anda ingin semua nomor Anda muncul dalam format yang bagus.
Misalnya, Anda mungkin ingin meratakan angka pada titik desimal
atau tentukan lebar kolom. Atau Anda mungkin ingin mencetak nomor Anda
dengan simbol mata uang ($ 100,00) atau tambahkan tanda persentase padanya (35,7%).
 
Anda dapat menggunakan format () untuk mengubah angka Anda menjadi teks cantik, siap untuk dicetak.
Fungsi ini membutuhkan sejumlah argumen untuk mengontrol format file
hasil. Berikut ini beberapa di antaranya:
 
✓ ✓ trim : Nilai logis. Jika SALAH , itu menambahkan spasi ke kanan - membenarkan hasilnya.
Jika BENAR , ini menekan spasi di depan.
✓ ✓ digit : Berapa digit signifikan dari nilai numerik yang akan ditampilkan.
✓ ✓ nsmall : Jumlah digit minimum setelah koma desimal.
 
Selain itu, Anda mengontrol format koma desimal dengan desimal.mark ,
tanda antara interval sebelum titik desimal dengan tanda besar , dan
tandai di antara interval setelah titik desimal dengan tanda kecil .
 
Misalnya, Anda dapat mencetak angka 12345.6789 dengan koma sebagai desimal
titik, spasi sebagai tanda besar, dan titik sebagai tanda kecil:
 
> format (12345.6789, digit = 9, decimal.mark = ",",
+ big.mark = "", small.mark = ".", small.interval = 3)
[1] "12 345.678,9"
 
Sebagai contoh yang lebih praktis, untuk menghitung mean dari beberapa kolom
mtcars dan kemudian mencetak hasilnya dengan dua digit setelah koma desimal, gunakan
pengikut:
 
> x <- colMeans (mtcars [, 1: 4])
> format (x, digit = 2, nsmall = 2)
mpg cyl disp hp
"20.09" "6.19" "230.72" "146.69"
 
Perhatikan bahwa hasilnya bukan lagi angka tetapi string teks. Jadi berhati-hatilah
saat Anda menggunakan pemformatan angka - ini harus menjadi langkah terakhir di
melaporkan alur kerja.
 
Jika Anda terbiasa dengan pemrograman dalam bahasa yang mirip dengan C atau C ++, maka Anda
juga mungkin menemukan fungsi sprintf () berguna, karena sprintf () adalah pembungkus
di sekitar fungsi C printf () . Pembungkus ini memungkinkan Anda untuk menempelkan file
nomor yang diformat langsung menjadi string.
 
Berikut adalah contoh mengubah angka menjadi persentase:
 
> x <- seq (0,5, 0,55, 0,01)
> sprintf ("%. 1f %%", 100 * x)
[1] "50.0%" "51.0%" "52.0%" "53.0%" "54.0%" "55.0%"
 
Sedikit keajaiban ini seharusnya tidak asing bagi pemrogram C, tetapi bagi yang lainnya
kami, inilah yang dilakukannya: Argumen pertama untuk sprintf () menunjukkan
format - dalam hal ini, "% .1f %%" . Argumen format menggunakan literal khusus
yang menunjukkan bahwa fungsi tersebut harus mengganti literal ini dengan variabel
dan menerapkan beberapa pemformatan. Literal selalu dimulai dengan simbol % . Begitu,
dalam hal ini, % .1f berarti memformat nilai pertama yang diberikan sebagai titik tetap
nilai dengan satu digit setelah koma desimal, dan %% adalah literal yang artinya
cetak %
 

 
Untuk memformat beberapa angka sebagai mata uang - dalam hal ini, dolar AS - gunakan:
 
> set.seed (1)
> x <- 1000 * runif (5)
> sprintf ("$% 3.2f", x)
[1] "$ 265,51" "$ 372,12" "$ 572,85" "$ 908,21" "$ 201,68"
 
Seperti yang Anda lihat sebelumnya, % 3.2f literal berarti memformat nilai sebagai titik tetap
nilai dengan tiga digit sebelum desimal dan dua digit setelah desimal.
 
Fungsi sprintf () jauh lebih kuat dari itu: Ini memberi Anda file
cara alternatif untuk menempelkan nilai variabel apa pun ke dalam string:
 
> barang <- c ("roti", "cookie")
> harga <- c (2.1, 4)
> sprintf ("% s cost $% 3.2f", barang, harga)
[1] "harga roti $ 2,10" "harga kue kering $ 4,00"
 
Apa yang terjadi di sini adalah, karena Anda memberikan dua vektor (masing-masing dengan dua
elemen) ke sprintf () , hasilnya adalah vektor dengan dua elemen. Siklus R.
melalui elemen dan menempatkannya ke dalam sprintf () literal. Jadi, % s
(menunjukkan format nilai sebagai string) mendapatkan nilai "roti" untuk pertama kalinya
dan "cookie" untuk kedua kalinya.
 
Anda bisa melakukan semuanya dengan paste () dan format () yang bisa Anda lakukan dengan
sprintf () , jadi Anda tidak perlu menggunakannya. Tapi bila Anda melakukannya, itu bisa
sederhanakan kode Anda.

Mengubah urutan Kolom atau Baris


Terkadang Anda perlu mengubah urutan data dari baris ke kolom atau sebaliknya
sebaliknya. Di R, fungsi untuk mengubah urutan matriks adalah t () :
 
> x <- matriks (1:12, ncol = 3)
>x
[, 1] [, 2] [, 3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
 
Untuk mendapatkan transpos dari sebuah matriks, gunakan t () :
 
> t (x)
[, 1] [, 2] [, 3] [, 4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
 
Anda juga dapat menggunakan t () untuk mengubah urutan bingkai data, tetapi hati-hati saat Anda melakukannya
melakukan hal ini. Hasil transposisi selalu berupa matriks (atau larik). Karena
array selalu hanya memiliki satu jenis variabel, seperti numerik atau karakter,
jenis variabel hasil Anda mungkin tidak seperti yang Anda harapkan.
 
Perhatikan bahwa transposisi mtcars adalah larik karakter:
 
> t (mtcars [1: 4,])
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
mpg "21.0" "21.0" "22.8" "21.4"
silinder "6" "6" "4" "6"
disp "160" "160" "108" "258"
hp "110" "110" "93" "110"
drat "3.90" "3.90" "3.85" "3.08"
dengan "2.620" "2.875" "2.320" "3.215"
qsec "16.46" "17.02" "18.61" "19.44"
vs "0" "0" "1" "1"
saya "1" "1" "1" "0"
roda gigi "4" "4" "4" "3"
karbohidrat "4" "4" "1" "1"
mpgKelas "Tinggi" "Tinggi" "Tinggi" "Tinggi"
 

Menemukan Nilai Unik atau Duplikat


Untuk mengidentifikasi semua nilai unik dalam data Anda, gunakan fungsi unique () .
Coba temukan nilai unik dari jumlah silinder di mtcars :
 
> unik (mtcars $ cyl)
[1] 6 4 8
 
Terkadang Anda ingin mengetahui nilai mana dari data Anda yang merupakan duplikat.
Bergantung pada situasi Anda, duplikat tersebut akan valid, tetapi terkadang
entri ganda dapat menunjukkan data yang - masalah entri.
 
Fungsi untuk mengidentifikasi entri duplikat adalah duplikat () . Di dalam
iris dataset , ada baris duplikat di baris 143. Coba sendiri:
 
> dupes <- duplikat (iris)
> kepala (dupes)
[1] SALAH SALAH SALAH SALAH SALAH SALAH
> yang mana (menipu)
[1] 143
> iris [dupes,]
Sepal.Length Sepal.Width Petal.Length Petal.Width Spesies
143 5.8 2.7 5.1 1.9 virginica
 
Karena hasil duplikat () adalah vektor logika, Anda dapat menggunakannya
sebagai indeks untuk menghapus baris dari data Anda. Untuk melakukan ini, gunakan negasi
operator - tanda seru (seperti dalam ! dupes ):
 
> iris [! dupes,]
> nrow (iris [! dupes,])
[1] 149
 

Bekerja dengan Tabel Pencarian


Dalam aplikasi spreadsheet seperti Excel, Anda dapat membuat tabel pencarian dengan-the
fungsi vlookup atau kombinasi dari index dan match .
 
Di R, mungkin lebih mudah menggunakan merge () (lihat Bab 13) atau match () . Itu
match () fungsi mengembalikan vektor dengan posisi elemen yang cocok
nilai pencarian Anda.
 
Misalnya, untuk menemukan lokasi elemen "Toyota Corolla" di
nama baris mtcars , coba yang berikut ini:
 
> index <- match ("Toyota Corolla", rownames (mtcars))
> indeks
[1] 20
> mtcars [indeks, 1: 4]
mpg cyl disp hp
Toyota Corolla 33.9 4 71.1 65
 
Anda dapat melihat bahwa posisi indeks adalah 20, dan baris ke-20 adalah
baris yang Anda cari.
 
Bekerja dengan Tabel Pivot
Di Excel, tabel pivot adalah alat yang berguna untuk memanipulasi dan menganalisis data.
 
Untuk tabel sederhana di R, Anda bisa menggunakan fungsi tapply () untuk mencapai yang serupa
hasil. Berikut adalah contoh penggunaan tapply () untuk menghitung mean hp untuk mobil
dengan jumlah silinder dan roda gigi yang berbeda:
 
> dengan (mtcars, tapply (hp, list (cyl, gear), mean))
345
4 97.0000 76.0 102.0
6 107.5000 116.5 175.0
8 194.1667 NA 299.5
 
Untuk tabel yang sedikit lebih kompleks - yaitu, tabel dengan lebih dari dua klasifikasi silang
faktor - gunakan fungsi aggregate () :
 
> agregat (hp ~ cyl + gear + am, mtcars, mean)
cyl gear am hp
1 4 3 0 97,00000
2 6 3 0 107.50000
3 8 3 0 194.16667
4 4 4 0 78.50000
5 6 4 0 123.00000
6 4 4 1 75.16667
7 6 4 1.110.00000
8 4 5 1 102.00000
9 6 5 1 175,00000
10 8 5 1 299,50000
 
Jika Anda sering bekerja dengan tabel di Excel, Anda harus menjelajahi
paket dplyr dan tidyr yang tersedia di CRAN di http: // cran.
r - project.org/web/packages/dplyr dan http: //cran.r - project.
org / web / packages / tidyr , masing-masing. Paket-paket ini menyediakan a
sejumlah fungsi untuk masalah manipulasi data umum.
 

Menggunakan Goal Seek dan Solver


Salah satu fitur yang sangat kuat dari Excel adalah bahwa ia memiliki sangat mudah - untuk - menggunakan solver
yang
memungkinkan Anda menemukan nilai minimum atau maksimum untuk fungsi yang diberikan beberapa
kendala.
 
Sebuah badan matematika yang sangat besar bertujuan untuk memecahkan semua masalah pengoptimalan
jenis. Di R, fungsi optimization () menyediakan satu mekanisme yang cukup sederhana
untuk mengoptimalkan fungsi.
 
Bayangkan Anda adalah direktur penjualan sebuah perusahaan dan Anda perlu menetapkan yang terbaik
harga untuk produk Anda. Dengan kata lain, cari harga produk yang maksimal
pendapatan.
 
Dalam ilmu ekonomi, model penetapan harga sederhana menyatakan bahwa orang membeli lebih sedikit barang
tertentu
produk saat harga naik. Inilah fungsi yang sangat sederhana yang memiliki ini
tingkah laku:
 
> penjualan <- fungsi (harga) {100 - 0,5 * harga}
 
Pendapatan yang diharapkan kemudian hanyalah produk dari harga dan penjualan yang diharapkan:
 
> pendapatan <- fungsi (harga) {harga * penjualan (harga)}

 
Anda dapat menggunakan fungsi curve () untuk memplot fungsi berkelanjutan. Ini membutuhkan
berfungsi sebagai input dan menghasilkan plot. Cobalah untuk merencanakan perilaku penjualan dan
pendapatan menggunakan fungsi curve () , harga bervariasi dari $ 50 hingga $ 150:
 
> oldpar <- par (mfrow = c (1, 2), bty = "l")
> kurva (penjualan, dari = 50, menjadi = 150, xname = "harga", main = "Penjualan")
> kurva (pendapatan, dari = 50, menjadi = 150, xname = "harga", utama = "Pendapatan")
> par (oldpar)
 
Hasil Anda akan terlihat seperti Gambar 19-1.
 
Anda memiliki model kerja penjualan dan pendapatan. Dari angka tersebut, Anda bisa
segera lihat bahwa ada titik pendapatan maksimum. Selanjutnya, gunakan
Fungsi R optimalkan () untuk mencari nilai maksimum tersebut. Untuk menggunakan optimalkan () ,
Anda perlu memberi tahu fungsi mana yang akan digunakan (dalam hal ini, revenue () ),
 
Gambar 19-1:
Model dari
diharapkan
penjualan dan
pendapatan
 
serta intervalnya (dalam hal ini, harga antara 50 dan 150). Secara default,
optimalkan () mencari nilai minimum, jadi dalam hal ini Anda harus memberitahu
itu untuk mencari nilai maksimum:
 
> optimalkan (pendapatan, interval = c (50, 150), maksimum = TRUE)
$ maksimum
[1] 100
 
$ objektif
[1] 5.000
 
Dan begitulah. Tetapkan harga $ 100, dan perkirakan untuk mendapatkan pendapatan $ 5.000.
 
Pemecah Excel menggunakan Algoritma Gradien Tergeneralisasi untuk
mengoptimalkan masalah nonlinier ( http://support.microsoft.com/
kb / 214115 ). Fungsi R optimalkan () menggunakan kombinasi emas
pencarian bagian dan interpolasi parabola berturut-turut, yang jelas tidak
hal yang sama seperti Pemecah Excel. Untungnya, sejumlah besar paket
menyediakan berbagai algoritme berbeda untuk memecahkan masalah pengoptimalan. Di
Faktanya, ada tampilan tugas khusus pada CRAN untuk optimasi dan matematis
pemrograman. Buka http: //cran.r - project.org/web/views/
Optimization.html untuk mengetahui lebih dari yang Anda inginkan
untuk mengetahui!
 

 
 

  

Anda mungkin juga menyukai