manajemen data frame di r - stat.ipb.ac.id · manajemen data frame •menciptakan variabel baru...
Post on 15-Mar-2020
20 Views
Preview:
TRANSCRIPT
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")
top related