rm(list=ls())

wide.format <- data.frame(
  male = c(5, 3),
  female = c(3, 2)
)

rownames(wide.format) <- c('seoul','busan')

wide.format
##       male female
## seoul    5      3
## busan    3      2
unbox <- function(df){
  
  cn <- colnames(df)
  rn <- rownames(df)
  result <- data.frame()
  
  for(i in 1:length(rn)){
    for(j in 1:length(cn)){
      temp <- 
        data.frame(
          rep(rn[i], df[i,j]),
          rep(cn[j], df[i,j])
        )
      result <- rbind(result, temp)
    }
  }
  
  colnames(result) <- paste('x', 1:ncol(result), sep='')
  result
}

finish <- unbox(wide.format)
colnames(finish) <- c('region', 'sex')

finish
##    region    sex
## 1   seoul   male
## 2   seoul   male
## 3   seoul   male
## 4   seoul   male
## 5   seoul   male
## 6   seoul female
## 7   seoul female
## 8   seoul female
## 9   busan   male
## 10  busan   male
## 11  busan   male
## 12  busan female
## 13  busan female