22
Manajemen Data Frame di R Department of Statistics IPB 1

Manajemen Data Frame di R - stat.ipb.ac.id · Manajemen data frame •Menciptakan variabel baru dalam data frame •Subsetting data •Sorting data •Recoding data •Merging data

  • Upload
    others

  • View
    19

  • Download
    1

Embed Size (px)

Citation preview

Manajemen Data Frame di R

𝜏𝜌

Department of Statistics IPB 1

Objek di R

• Vector

• Matrix

• Array

• Factor

• List

• Data Frame

c(…) , assign(”var”,c(…)) , seq(…), rep(…), paste(…)

matrix(…,m,n),dim(vector)<-c(m,n),rbind(…),cbind(…)

array(element,dim=)

factor(element), ordered(element,level)

list(…,…,)

data.frame(…,…,)

Department of Statistics IPB 2

Latihan objek data.frame

• Pendefinisian data.frame e1 <- matrix(1:15,5,3)

e2 <- paste("P",1:5,sep="")

da <- data.frame(e2,e1)

is.data.frame(da)

• Akses data.frame X1 <- da[,2] #akses kolom e1

X12<- da$e1 #akses kolom e1

Department of Statistics IPB 3

• Fungsi-fungsi umum untuk data.frame names(da) #nama-nama peubah pada data.frame

dim(da) #dimensi data.frame

str(da) #struktur data.frame

summary(da) #ringkasan statistik peubah data.frame

Department of Statistics IPB 4

Latihan 1

• Buatlah sintaks dengan output sebagai berikut A Kel resp

A1 1 1.000000

A1 2 1.428571

A2 1 1.857143

A2 2 2.285714

A3 1 2.714286

A3 2 3.142857

A4 1 3.571429

A4 2 4.000000

A <- paste("A",rep(1:4,each=2),sep="")

Kel <- rep(1:2,4)

resp <- seq(1,4,length=8)

data1 <- data.frame(A,Kel,resp) Department of Statistics IPB 5

Manajemen data frame

• Menciptakan variabel baru dalam data frame

• Subsetting data

• Sorting data

• Recoding data

• Merging data

• Reshaping data

Department of Statistics IPB 6

Menciptakan variabel baru dalam data frame

Dilakukan seperti menciptakan vektor (dengan indeks atau operasi seleksi)

dataframe$baru<-ekspresi

Department of Statistics IPB 7

Latihan 2

• Pada data berikut, buatlah variabel ‘baru’ yang berisi nilai dari 8 sampai 1 secara berurutan

Department of Statistics IPB 8

A Kel resp A1 1 1.000000

A1 2 1.428571

A2 1 1.857143

A2 2 2.285714

A3 1 2.714286

A3 2 3.142857

A4 1 3.571429

A4 2 4.000000

data1$baru <- 8:1

data1

Subsetting data

Dilakukan untuk akses sebagian data

Membuat ide logic untuk diterapkan dalam vektor logic yang diinginkan

Fungsi yang digunakan :

==, !=, >, >=, <, <=, %in%, duplicated,

is.na, is.null, is.numeric, dll…

Department of Statistics IPB 9

Latihan 3

Dari data data1 tersebut ambillah yang termasuk kelompok 1

indeks <- (data1$Kel == 1)

data3 <- data1[indeks,]

Department of Statistics IPB 10

> data1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

4 A2 2 2.285714 5

5 A3 1 2.714286 4

6 A3 2 3.142857 3

7 A4 1 3.571429 2

8 A4 2 4.000000 1

A Kel resp baru

1 A1 1 1.000000 8

3 A2 1 1.857143 6

5 A3 1 2.714286 4

7 A4 1 3.571429 2

Latihan 4

Dari data data1 tersebut ambillah yang termasuk kelompok 1 atau A1

indeks1 <- (data1$Kel == 1 | data1$A == "A1")

data4 <- data1[indeks1,]

Department of Statistics IPB 11

> data1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

4 A2 2 2.285714 5

5 A3 1 2.714286 4

6 A3 2 3.142857 3

7 A4 1 3.571429 2

8 A4 2 4.000000 1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

5 A3 1 2.714286 4

7 A4 1 3.571429 2

Sorting Data

Dilakukan untuk mengurutkan data berdasarkan beberapa peubah tertentu

Dilakukan dengan membuat vektor logika untuk melakukan pengurutan data

Fungsi yang sering digunakan

• order(), sort(), which(), rev(), unique()

Department of Statistics IPB 12

Latihan 5

Department of Statistics IPB 13

Urutkan data tersebut berdasarkan kelompok (Kel) secara ascending

indeks2 <- order(data1$Kel)

data5 <- data1[indeks2,]

> data1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

4 A2 2 2.285714 5

5 A3 1 2.714286 4

6 A3 2 3.142857 3

7 A4 1 3.571429 2

8 A4 2 4.000000 1

A Kel resp baru

1 A1 1 1.000000 8

3 A2 1 1.857143 6

5 A3 1 2.714286 4

7 A4 1 3.571429 2

2 A1 2 1.428571 7

4 A2 2 2.285714 5

6 A3 2 3.142857 3

8 A4 2 4.000000 1

Latihan 6

Department of Statistics IPB 14

Urutkan data tersebut berdasarkan kelompok dan respon secara descending

indeks3 <- order(data1$Kel,data1$resp,decreasing=TRUE)

data6 <- data1[indeks3,]

> data1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

4 A2 2 2.285714 5

5 A3 1 2.714286 4

6 A3 2 3.142857 3

7 A4 1 3.571429 2

8 A4 2 4.000000 1

A Kel resp baru

8 A4 2 4.000000 1

6 A3 2 3.142857 3

4 A2 2 2.285714 5

2 A1 2 1.428571 7

7 A4 1 3.571429 2

5 A3 1 2.714286 4

3 A2 1 1.857143 6

1 A1 1 1.000000 8

Latihan 7

Department of Statistics IPB 15

Urutkan data tersebut berdasarkan kelompok secara ascending dan respon secara descending

indeks4 <- order(data1$resp,decreasing=TRUE)

data7 <- data1[indeks4,]

indeks5 <- order(data7$Kel)

data8 <- data7[indeks5,]

> data1

A Kel resp baru

1 A1 1 1.000000 8

2 A1 2 1.428571 7

3 A2 1 1.857143 6

4 A2 2 2.285714 5

5 A3 1 2.714286 4

6 A3 2 3.142857 3

7 A4 1 3.571429 2

8 A4 2 4.000000 1

A Kel resp baru

7 A4 1 3.571429 2

5 A3 1 2.714286 4

3 A2 1 1.857143 6

1 A1 1 1.000000 8

8 A4 2 4.000000 1

6 A3 2 3.142857 3

4 A2 2 2.285714 5

2 A1 2 1.428571 7

Recoding Data

Digunakan untuk membuat nilai baru dari nilai peubah yang sudah ada

Dapat secara logical, fungsi ifelse, dan fungsi recode

Department of Statistics IPB 16

Latihan 8

Dengan logical data1$Code <- 0*(data1$resp<=2)+1*(data1$resp>2)

Dengan fungsi ifelse data1$Code <- ifelse(data1$resp<=2,0,1)

Dengan fungsi recode library(car)

data1$Code <- recode(data1$resp,'1:2=0;else=1')

Department of Statistics IPB 17

Lakukanlah recoding pada data1 untuk peubah resp dengan kondisi jika resp > 2 maka Code = 1, selainnya Code = 0

Merging Data

Bisa dilakukan dengan rbind atau cbind

Lebih mudah dengan fungsi merge

Department of Statistics IPB 18

Latihan 9

Department of Statistics IPB 19

> data1

A Kel resp baru Code

1 A1 1 1.000000 8 0

2 A1 2 1.428571 7 0

3 A2 1 1.857143 6 0

4 A2 2 2.285714 5 1

5 A3 1 2.714286 4 1

6 A3 2 3.142857 3 1

7 A4 1 3.571429 2 1

8 A4 2 4.000000 1 1

> tabel1

a1 k1

1 A4 1

2 A3 2

tabel1 <- data.frame(a1=c("A4","A3"),k1=1:2)

data9<-merge(data1,tabel1,by.x=1,by.y=1,all=FALSE)

data10<-merge(data1,tabel1,by.x=1,by.y=1,all=TRUE)

Gabungkanlah data data1 dengan tabel1 berdasarkan peubah pertamanya

Reshaping Data

Membentuk data baru dengan cara :

Long to wide format

Wide to long format

Menggunakan fungsi reshape()

Department of Statistics IPB 20

Latihan 10

Department of Statistics IPB 21

Ubahlah data di samping menjadi data dengan setiap barisnya merupakan masing-masing A

##long to wide

data11 <- reshape(data1,idvar="A",timevar="Kel",direction="wide")

> data1

A Kel resp baru Code

1 A1 1 1.000000 8 0

2 A1 2 1.428571 7 0

3 A2 1 1.857143 6 0

4 A2 2 2.285714 5 1

5 A3 1 2.714286 4 1

6 A3 2 3.142857 3 1

7 A4 1 3.571429 2 1

8 A4 2 4.000000 1 1

Kebalikannya ##wide to long

data12 <- reshape(data11,idvar="A",timevar="Kel",direction="long")

Terima kasih

Department of Statistics IPB 22