Big Data Analytics - Pengantar R

Bagian ini dikhususkan untuk memperkenalkan pengguna pada bahasa pemrograman R. R dapat diunduh dari situs web cran . Untuk pengguna Windows, menginstal rtools dan rstudio IDE akan berguna .

Konsep umum dibalik R berfungsi sebagai antarmuka ke perangkat lunak lain yang dikembangkan dalam bahasa terkompilasi seperti C, C ++, dan Fortran dan untuk memberi pengguna alat interaktif untuk menganalisis data.

Arahkan ke folder file zip buku bda/part2/R_introduction dan buka R_introduction.Rprojmengajukan. Ini akan membuka sesi RStudio. Kemudian buka file 01_vectors.R. Jalankan skrip baris demi baris dan ikuti komentar di kode. Pilihan lain yang berguna untuk belajar adalah dengan mengetikkan kode, ini akan membantu Anda terbiasa dengan sintaks R. Di R komentar ditulis dengan simbol #.

Untuk menampilkan hasil menjalankan kode R di buku, setelah kode dievaluasi, hasil R kembali dikomentari. Dengan cara ini, Anda dapat menyalin dan menempel kode di buku dan mencoba langsung bagian-bagiannya di R.

# Create a vector of numbers 
numbers = c(1, 2, 3, 4, 5) 
print(numbers) 

# [1] 1 2 3 4 5  
# Create a vector of letters 
ltrs = c('a', 'b', 'c', 'd', 'e') 
# [1] "a" "b" "c" "d" "e"  

# Concatenate both  
mixed_vec = c(numbers, ltrs) 
print(mixed_vec) 
# [1] "1" "2" "3" "4" "5" "a" "b" "c" "d" "e"

Mari kita analisis apa yang terjadi di kode sebelumnya. Kita dapat melihat bahwa dimungkinkan untuk membuat vektor dengan angka dan huruf. Kami tidak perlu memberi tahu R tipe data apa yang kami inginkan sebelumnya. Akhirnya, kami dapat membuat vektor dengan angka dan huruf. Vektor mixed_vec telah memaksa angka menjadi karakter, kita dapat melihatnya dengan memvisualisasikan bagaimana nilai dicetak di dalam tanda kutip.

Kode berikut menunjukkan tipe data dari berbagai vektor yang dikembalikan oleh kelas fungsi. Biasanya menggunakan fungsi kelas untuk "menginterogasi" sebuah objek, menanyakan kelasnya.

### Evaluate the data types using class

### One dimensional objects 
# Integer vector 
num = 1:10 
class(num) 
# [1] "integer"  

# Numeric vector, it has a float, 10.5 
num = c(1:10, 10.5) 
class(num) 
# [1] "numeric"  

# Character vector 
ltrs = letters[1:10] 
class(ltrs) 
# [1] "character"  

# Factor vector 
fac = as.factor(ltrs) 
class(fac) 
# [1] "factor"

R juga mendukung objek dua dimensi. Pada kode berikut, terdapat contoh dari dua struktur data terpopuler yang digunakan di R: matrix dan data.frame.

# Matrix
M = matrix(1:12, ncol = 4) 
#      [,1] [,2] [,3] [,4] 
# [1,]    1    4    7   10 
# [2,]    2    5    8   11 
# [3,]    3    6    9   12 
lM = matrix(letters[1:12], ncol = 4) 
#     [,1] [,2] [,3] [,4] 
# [1,] "a"  "d"  "g"  "j"  
# [2,] "b"  "e"  "h"  "k"  
# [3,] "c"  "f"  "i"  "l"   

# Coerces the numbers to character 
# cbind concatenates two matrices (or vectors) in one matrix 
cbind(M, lM) 
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] 
# [1,] "1"  "4"  "7"  "10" "a"  "d"  "g"  "j"  
# [2,] "2"  "5"  "8"  "11" "b"  "e"  "h"  "k"  
# [3,] "3"  "6"  "9"  "12" "c"  "f"  "i"  "l"   

class(M) 
# [1] "matrix" 
class(lM) 
# [1] "matrix"  

# data.frame 
# One of the main objects of R, handles different data types in the same object.  
# It is possible to have numeric, character and factor vectors in the same data.frame  

df = data.frame(n = 1:5, l = letters[1:5]) 
df 
#   n l 
# 1 1 a 
# 2 2 b 
# 3 3 c 
# 4 4 d 
# 5 5 e

Seperti yang ditunjukkan pada contoh sebelumnya, dimungkinkan untuk menggunakan tipe data yang berbeda dalam objek yang sama. Secara umum, ini adalah bagaimana data disajikan dalam database, API bagian dari data adalah teks atau vektor karakter dan numerik lainnya. Tugas analis adalah untuk menentukan tipe data statistik mana yang akan ditetapkan dan kemudian menggunakan tipe data R yang benar untuknya. Dalam statistik, kami biasanya menganggap variabel adalah dari jenis berikut -

  • Numeric
  • Nominal atau kategoris
  • Ordinal

Di R, vektor bisa dari kelas berikut -

  • Numerik - Integer
  • Factor
  • Faktor yang Dipesan

R menyediakan tipe data untuk setiap tipe statistik variabel. Faktor terurut jarang digunakan, tetapi dapat dibuat oleh faktor fungsi, atau dipesan.

Bagian berikut membahas konsep pengindeksan. Ini adalah operasi yang cukup umum, dan menangani masalah pemilihan bagian dari suatu objek dan membuat transformasi padanya.

# Let's create a data.frame
df = data.frame(numbers = 1:26, letters) 
head(df) 
#      numbers  letters 
# 1       1       a 
# 2       2       b 
# 3       3       c 
# 4       4       d 
# 5       5       e 
# 6       6       f 

# str gives the structure of a data.frame, it’s a good summary to inspect an object 
str(df) 
#   'data.frame': 26 obs. of  2 variables: 
#   $ numbers: int  1 2 3 4 5 6 7 8 9 10 ... 
#   $ letters: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...  

# The latter shows the letters character vector was coerced as a factor. 
# This can be explained by the stringsAsFactors = TRUE argumnet in data.frame 
# read ?data.frame for more information  

class(df) 
# [1] "data.frame"  

### Indexing
# Get the first row 
df[1, ] 
#     numbers  letters 
# 1       1       a  

# Used for programming normally - returns the output as a list 
df[1, , drop = TRUE] 
# $numbers 
# [1] 1 
#  
# $letters 
# [1] a 
# Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z  

# Get several rows of the data.frame 
df[5:7, ] 
#      numbers  letters 
# 5       5       e 
# 6       6       f 
# 7       7       g  

### Add one column that mixes the numeric column with the factor column 
df$mixed = paste(df$numbers, df$letters, sep = ’’)  

str(df) 
# 'data.frame': 26 obs. of  3 variables: 
# $ numbers: int  1 2 3 4 5 6 7 8 9 10 ...
# $ letters: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ... 
# $ mixed  : chr  "1a" "2b" "3c" "4d" ...  

### Get columns 
# Get the first column 
df[, 1]  
# It returns a one dimensional vector with that column  

# Get two columns 
df2 = df[, 1:2] 
head(df2)  

#      numbers  letters 
# 1       1       a 
# 2       2       b 
# 3       3       c 
# 4       4       d 
# 5       5       e 
# 6       6       f  

# Get the first and third columns 
df3 = df[, c(1, 3)] 
df3[1:3, ]  

#      numbers  mixed 
# 1       1     1a
# 2       2     2b 
# 3       3     3c  

### Index columns from their names 
names(df) 
# [1] "numbers" "letters" "mixed"   
# This is the best practice in programming, as many times indeces change, but 
variable names don’t 
# We create a variable with the names we want to subset 
keep_vars = c("numbers", "mixed") 
df4 = df[, keep_vars]  

head(df4) 
#      numbers  mixed 
# 1       1     1a 
# 2       2     2b 
# 3       3     3c 
# 4       4     4d 
# 5       5     5e 
# 6       6     6f  

### subset rows and columns 
# Keep the first five rows 
df5 = df[1:5, keep_vars] 
df5 

#      numbers  mixed 
# 1       1     1a 
# 2       2     2b
# 3       3     3c 
# 4       4     4d 
# 5       5     5e  

# subset rows using a logical condition 
df6 = df[df$numbers < 10, keep_vars] 
df6 

#      numbers  mixed 
# 1       1     1a 
# 2       2     2b 
# 3       3     3c 
# 4       4     4d 
# 5       5     5e 
# 6       6     6f 
# 7       7     7g 
# 8       8     8h 
# 9       9     9i