Minggu, 15 Oktober 2017

Contoh R coding sederhana



Belajar bahasa R tidak susah, bahkan bagi yang belum punya dasar komputer programming. Bahasa R memang dirancang untuk analisa statistik dan matematik. Tentu semua orang yang pernah bersekolah pasti pernah mendapakan pelajaran, matematika dan statistik.

Belajar Bahasa Programming, tidak seperti belajar Bahasa Inggris, bicara Bahasa Inggris kurang sedikit masih bisa dimengerti, tapi bahasa programing, kurang titik saja tidak akan keluar hasilnya. Memulai belajar coding sejak dini banyak manfaatnya, disamping melatih logika, bahasa programming banyak memakai syntax/perintah yang harus dihafalkan.


Di bawah akan diberikan beberapa contoh dasar coding R programming.
Logo Rstudio



a <- 42
A <- a * 2  # R is case sensitive
print(a)
cat(A, "\n") # "84" is concatenated with "\n"
if(A>a) # true, 84 > 42
{
  cat(A, ">", a, "\n")
}

[1] 42
84
84 > 42
#Fungsi
Square <- function(x) {
  return(x^2)
}

print(Square(4))
print(Square(x=4)) # same thing
[1] 16
[1] 16
#---Coundown
countdown <- function(from)
{
  print(from)
  while(from!=0)
  {
    Sys.sleep(1)
    from <- from - 1
    print(from)
  }
}

countdown(5)
> countdown(5)
[1] 5
[1] 4
[1] 3
[1] 2
[1] 1
[1] 0
#---Readline funsi
readinteger <- function()
{ 
  n <- readline(prompt="Enter an integer: ")
  n <- as.integer(n)
  if (is.na(n)){
    n <- readinteger()
  }
  return(n)
}

print(readinteger())
 
Enter an integer: 
Enter an integer: boo
Enter an integer: 44
[1] 44
Warning message:
In readinteger() : NAs introduced by coercion
#---List
sum(0:9)
append(LETTERS[1:13],letters[14:26])
c(1,6,4,9)*2
something <- c(1,4,letters[2])  # indices start at one, you get (1,4,"b")
length(something)
sum(0:9)
[1] 45
> append(LETTERS[1:13],letters[14:26])
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "n" "o"
[16] "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
> c(1,6,4,9)*2
[1]  2 12  8 18
> something <- c(1,4,letters[2]) #indices start at one, you get (1,4,"b")
> length(something)
[1] 3
#---Baca data
tbl <- read.table(file.choose(),header=TRUE,sep=",")
population <- tbl["POPESTIMATE2009"]
print(summary(population[-1:-5,]))
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
  544300  1734000  4141000  5980000  6613000 36960000 
#Filtering data
tbl <- read.table(file.choose(),header=TRUE,sep=',')
population <- tbl[c("NAME","POPESTIMATE2009","NPOPCHG_2009")]
smallest.state.pop <- min(population$POPESTIMATE2009)
print(population[population$POPESTIMATE2009==smallest.state.pop,])
      NAME POPESTIMATE2009 NPOPCHG_2009
56 Wyoming          544270        11289


Beberapa contoh sumber data yang bisa dipakai buat latihan, sudah ada beberapa dataset yang sudah embed dengan R sendiri, juga tersedia di blog seperti data.gov,data.un.orghttp://data.un.org/ dsb


mtcars
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
iris
    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
5            5.0         3.6          1.4         0.2     setosa
6            5.4         3.9          1.7         0.4     setosa
7            4.6         3.4          1.4         0.3     setosa
library(MASS)

 Boston
        crim    zn indus chas    nox    rm   age     dis rad tax ptratio  black lstat medv
1    0.00632  18.0  2.31    0 0.5380 6.575  65.2  4.0900   1 296    15.3 396.90  4.98 24.0
2    0.02731   0.0  7.07    0 0.4690 6.421  78.9  4.9671   2 242    17.8 396.90  9.14 21.6
3    0.02729   0.0  7.07    0 0.4690 7.185  61.1  4.9671   2 242    17.8 392.83  4.03 34.7
4    0.03237   0.0  2.18    0 0.4580 6.998  45.8  6.0622   3 222    18.7 394.63  2.94 33.4
5    0.06905   0.0  2.18    0 0.4580 7.147  54.2  6.0622   3 222    18.7 396.90  5.33 36.2
6    0.02985   0.0  2.18    0 0.4580 6.430  58.7  6.0622   3 222    18.7 394.12  5.21 28.7
7    0.08829  12.5  7.87    0 0.5240 6.012  66.6  5.5605   5 311    15.2 395.60 12.43 22.9
Contoh di atas hanya beberapa saja, sebagai gambaran bahwa belajar Bahasa R sangat mudah, gratis, dan tersedia banyak sumber data. Bila ada kesulitan bisa gabung di Komunitas Stack overflow.
Referensi:
Rstudio
Stackoverflow
Github

Rabu, 25 Januari 2017

R programming itu mudah.


R programming itu mudah.

Memulai bahasa R tidak bisa lepas dari Statistik, karena awalnya bahasa R dipakai untuk mengolah data statistik dan science, seiring perjalannanya bahasa R berkembang sangat pesat, dan sangat dibutuhkan untuk mengolah data dalam kehidupan nyata.
Install R studio bisa di sini.

Sebelum melangkah ke bahasa R itu sendiri, kita perlu mengerti istilah dasar statistik sbb:
STATISTIKA adalah kumpulan metoda yang digunakan untuk merencanakan eksperimen, mengambil data, dan kemudian menyusun, meringkas, menyajikan, menganalisa, menginterpretasikan dan mengambil kesimpulan yang didasarkan pada data tersebut.

1.STATISTIK DESKRIPTIV yaitu berkaitan dengan kegiatan pencatatan dan peringkasan hasil-hasil pengamatan terhadap kejadian-kejadian atau karakteristik-karakteristik
manusia, tempat dan sebagainya, secara kuantitatif

2.STATISTIK IFERENSIAL yaitu metode-metode untuk menganalisis sampel dari populasi sehingga dapat ditarik kesimpulan tentang populasi dari sampel tersebut.

3. POPULASI  adalah keseluruhan objek psikologis yang menjadi perhatian.
Contoh Jumlah Jumlah penduduk Indonesia saat ini 260jt jiwa

4.SAMPLE adalah himpunan bagian dari populasi.
Contoh, diambil sample random sejumlah 30% dari 260jt, 30%X260jt

5.DATA adalah hasil observasi atau pengamatan yang telah dikumpulan. Data dapat berupa hasil pengukuran; misalnya data tinggi dan berat badan, hasil pengelompokan; misalnya jenis kelamin, hasil jawaban responden terhadap suatu quesioner; misalnya tingkat kepuasan.

6.POPULASI adalah koleksi lengkap semua elemen yang akan diselidiki.  Suatu koleksi dikatakan lengkap jika ia memuat semua subjek yang akan diselidiki.

7.SENSUS adalah koleksi data dari semua anggota dalam populasi.

8.STATISTIKA DESKRIPTIF  adalah statistika yang berkaitan dengan analisis dan deskripsi suatu grup sebagai populasinya, tanpa melakukan penarikan kesimpulan apapun untuk komunitas yang lebih luas dari grup tersebut.

9.STATISTIKA INFERENSI  adalah statistika yang mencoba untuk membuat suatu deduksi atau kesimpulan pada populasi dengan menggunakan sampel dari populasi tersebut.

10.PARAMETER  adalah sembarang nilai yang menjelaskan ciri populasi

11. HIMPUNAN DATA adalah kumpulan dari fakta yang dikumpulkan untuk maksudtertentu.
12. DATA DISKRIT : data yang diperoleh dari proses hitungan
13. DATA KONTINYU : data yang diperoleh dari proses pengukuran
14. VARIABELl : sebuah karakteristik yang dapat diperoleh dari berbagai kemungkinan hasil yang berbeda-beda.
15. VARIABEL KUANTITATIV: variabel yang hasilnya berupa angka
16. VARIABEL KUALITATIV : variabel yang hasilnya hanya atribut.

17. OBSERVASI : informasi tentang sebuah variabel tunggal untuk sebuah anggota dari sekumpulan data

Istilah diatas bagi yang pernah belajar di SMA  baik IPA/ IPS pasti sudah tahu. Jadi kapan lagi mencoba bahasa R.

Saya akan berikan contoh script R sbb:

library(dplyr) #untuk perhitungan
library(ggplot2) #plot grafik

#Baca data dari hardisk
data_awal <- read.csv("d:/bahan-blog/spm3.csv")

#Dimensi data
dim(data_awal)
1] 5479   10
Jumlah baris 5479, kolom 10

#spm3.csv, adalah data retail excel yang yang disimpan dalam hardisk, yang memuat jumlah penjualan dalam format csv, di simpan dalam hardisk local d:/bahan-blog

#Baca isi data
head(data_awal)
  year month date_of_month day_of_week mieinstant rokok  kopi  aqua    roti  susu
1          2000     1             1           6                      9083 1290 1000    900   800    700
2          2000     1             2           7                      8006 1300 1300  1200   900    900
3          2000     1             3           1                    13032 1000 1000  1000 1000    950
4          2000     1             4           2                    12558   900   900    900   700    700
5          2000     1             5           3                    10889   200   100    100   100    100
6          2000     1             6           4                      9887   500   500    500   500    500

#baca variable data
str(data_awal)
'data.frame':    5479 obs. of  10 variables:
 $ year                 : int  2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 ...
 $ month              : int  1 1 1 1 1 1 1 1 1 1 ...
 $ date_of_month: int  1 2 3 4 5 6 7 8 9 10 ...
 $ day_of_week   : int  6 7 1 2 3 4 5 6 7 1 ...
 $ mieinstant        : int  9083 8006 13032 12558 10889 9887 8777 8934 7949 13042 ...
 $ rokok                : int  1290 1300 1000 900 200 500 1200 1000 1300 300 ...
 $ kopi                  : int  1000 1300 1000 900 100 500 1200 1000 1200 300 ...
 $ aqua                 : int  900 1200 1000 900 100 500 1300 1000 1200 300 ...
 $ roti                    : int  800 900 1000 700 100 500 1300 1000 1200 300 ...
 $ susu                 : int  700 900 950 700 100 500 1300 1000 1200 300 ...


# Menhitung rata2 penjualan mieinstant/bulan selama th 2000

mean_mieinstant_perbulan <- data_awal %>%
  group_by(year,month) %>%
  filter(year==2000) %>%
  group_by(month) %>%
  summarise(mieinstant = mean(mieinstant))

head(mean_mieinstant_perbulan)
# A tibble: 6 x 2
  month mieinstant
  <int>      <dbl>
1     1      9973.
2     2      9988.
3     3      9898.
4     4      9879.
5     5     10656.
6     6     10897.

# Grafik rata rata penjualan mieinstan th 2000

grafik_mean_mieinstant_perbulan <-  ggplot(mean_mieinstant_perbulan, aes(x = month, y = mieinstant)) +
        geom_bar(stat = "identity") +
        ggtitle("Rata rata penjualan mieinstan th 2000")
grafik_mean_mieinstant_perbulan   
  
 
#Menghitung jumlah rata2  penjualan rokok/bulan  th 2000

mean_rokok_perbulan <- data_awal %>%
  group_by(year,month) %>%
  filter(year==2000) %>%
  group_by(month) %>%
  summarise(rokok = mean(rokok))

head(mean_rokok_perbulan)
# A tibble: 6 x 2
  month rokok
  <int> <dbl>
1     1  819.
2     2  888.
3     3  888.
4     4 1086.
5     5  924.
6     6  999.

# Grafik rata2 penjualan rokok per bulan th 2000

grafik_mean_rokok_perbulan <-  ggplot(mean_rokok_perbulan, aes(x = month, y = rokok)) +
        geom_bar(stat = "identity") +
        ggtitle("Rata rata penjualan rokok th 2000") 
grafik_mean_rokok_perbulan

Ini adalah bagian script dari sebuah Analisa, mudah kan.

Kesimpulan.
1. Bahasa R itu  brain friendly alias ramah otak, artinya tidak akan membuat otak anda jebol.
2. Cukup menguasai dasar Statistik, latihan coding, praktekan!
3. Triknya, banyak latihan, latihan membuat logika anda terasah, logika yang matang akan memudahkan analisa, pengalaman menganalisa jadi modal menuju data scientist.


Kapan Puncak Covid19 di Indonesia ?

Prediksi Covid19, kapan mencapai puncaknya? Selamat Idhul Fitri from Home, menjawab pertanyaan kapan covid19 mencapai puncaknya? ...