Skip to content

Instantly share code, notes, and snippets.

@kkprakasa
Last active October 13, 2023 06:45
Show Gist options
  • Save kkprakasa/7ec55e8e55b4572d8fc2ec2469f3883c to your computer and use it in GitHub Desktop.
Save kkprakasa/7ec55e8e55b4572d8fc2ec2469f3883c to your computer and use it in GitHub Desktop.
// sesuaikan query dengan data air untuk memasak dan bahan bakar memasak
require(foreign)
kor16<-read.dbf('../../SUSENAS/SUSENAS Maret 2016/kor16rt.dbf')[,c(1:4,22,26,108)]
b43 <- read.dbf('../../SUSENAS/SUSENAS Maret 2016/blok43.dbf')
b42 <- read.dbf('../../SUSENAS/SUSENAS Maret 2016/blok42.dbf')
#Scoring air dan bahanbakar memasak
air <- c( '1' = '4','2' = '3','3' = '3','4' = '2','5' = '2','6' = '1','7' = '1','8' = '0','9' = '0','10' = '0','11' = '0','12' = '0')
bb <- c( '0' = '3','1' = '5','2' = '4','3' = '4','4' = '2','5' = '4','6' = '2','7' = '1','8' = '1','9' = '1','10' = '1')
kor16$scair<-air[as.character(kor16$R1511A)]
kor16$scbb<-bb[as.character(kor16$R1515)]
#1 test filter b42
# c(130,131,134,136,138,140,142,144,145,147,148,153,155,157,159,163,164,166,169,170,171,172,173,174,175,194,198,199,202,205,238,239,240)
x <- b42[ b42$KODE %in% c(130,131,134,136,138,140,142,144,145,147,148,153,155,157,159,163,164,166,169,170,171,172,173,174,175,194,198,199,202,205,238,239,240),]
#2 test filter pengeluaran rutin b42
# c(130,131,134,136,138,140,142,144,145,148,153,155,157,159,163,164,166,169,170,171,172,175,194,205)
# x <- b42[ b42$KODE %in% c(130,131,134,136,138,140,142,144,145,148,153,155,157,159,163,164,166,169,170,171,172,175,194,205),]
# jadikan data RT
x<-aggregate(SEBULAN ~ R101+R102+R105+R301+WERT+URUT,x,sum)
# tambahkan kolom food untuk dijumlahkan dengan pengeluaran rutin
x<-merge(x,b43[,c('URUT','FOOD')],by='URUT')
# jumlahkan pengeluaran rutin dan pengeluaran FOOD
x$SEBULAN.2 <- rowSums(x[,c('SEBULAN','FOOD')])
#hitung nilai perkapita pengeluaran rutin
x$EXP_CAP <- x$SEBULAN.2 / x$R301
x$scexcap <- ifelse( x$EXP_CAP <= 187500 ,paste0('1'), ifelse( x$EXP_CAP < 225000 ,paste0('1'), ifelse( x$EXP_CAP < 312500 ,paste0('2'), ifelse( x$EXP_CAP < 375000 ,paste0('3'), ifelse( x$EXP_CAP < 487500 ,paste0('4'), ifelse( x$EXP_CAP < 500000 ,paste0('5'), ifelse( x$EXP_CAP < 625000 ,paste0('6'), ifelse( x$EXP_CAP < 750000 ,paste0('6'), ifelse( x$EXP_CAP < 1000000 ,paste0('7'), ifelse( x$EXP_CAP < 1125000 ,paste0('7'), ifelse( x$EXP_CAP < 1250000 ,paste0('7'), ifelse( x$EXP_CAP < 1500000 ,paste0('8'), ifelse( x$EXP_CAP < 1750000 ,paste0('8'), ifelse( x$EXP_CAP < 2000000 ,paste0('8'), ifelse( x$EXP_CAP < 2250000 ,paste0('8'),ifelse( x$EXP_CAP < 2500000 ,paste0('8'),paste0('9')))))))))))))))))
kor16<-merge(kor16,x[,c('URUT','scexcap','SEBULAN.2','EXP_CAP')], by='URUT')
kor16$scbb <- ifelse( kor16$scbb == 3 & kor16$SEBULAN.2 < 2500000, paste0(2),ifelse( kor16$scbb == 3 & kor16$SEBULAN.2 <= 5000000, paste0(3),ifelse( kor16$scbb == 3 & kor16$SEBULAN.2 > 5000000,paste0(4),paste0(kor16$scbb))))
# jumlahkan score
kor16$scair<-as.numeric(kor16$scair)
kor16$scbb<-as.numeric(kor16$scbb)
kor16$scexcap<-as.numeric(kor16$scexcap)
kor16$score<-rowSums(kor16[,c('scair','scbb','scexcap')])
# buat sec
kor16$sec<-ifelse( kor16$score < 5, paste('6_Lower2'),ifelse( kor16$score < 8, paste('5_Lower1'),ifelse( kor16$score < 11, paste('4_Middle2'),ifelse( kor16$score < 13, paste('3_Middle1'),ifelse( kor16$score < 15, paste('2_Upper2'),paste('1_Upper1'))))))
# lihat hasilnya
result <- cbind(aggregate(FWT ~ sec,kor16, sum),'sumFWT'=sum(kor16$FWT))
result$pct <- result$FWT/result$sumFWT
View(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment