Langsung ke konten utama

How to Import Data, Manipulate It, and Making Automatically Split Data by Unique ID using R?

Import Data, Data Manipulation, and Save Split Data by Unique ID

Hello readers, I'm so happy to say that I can share on this blog again. Now, I'll show you about how to manipulate data which imported from computer. The main package that so powerful in data manipulation is dplyr. This package is like pandas used in Python.

In this section, we import the data first and then we manipulate the digit of id and code (kd_kab, kd_kec, and kd_desa) with same variable's name. It realized using mutate() function that available in the package. However, the data that used just dummy data I prepared in xlsx format (excel).

After changing the digits, we run the code to make a new variable named "splitbase". This variable will be the base of splitting data in unique id. It may be a rare case in our daily data preprocessing, but I certain that this case would be found in real data, especially administration data.

The final stage of this section is how to save split data automatically in csv format separated by ";". In this stage, we use for function as looping activity in saving file that are subsets. As tools  for Data Science, Data Mining, and Data Engineering, I think R could help us to face our problems in collecting until dissemination data. So, importing data, manipulating it, and saving the split data becomes an easy thing.

I think enough for the explanations, now we want to practice it using some codes in R programming as below:


# activate package dplyr for data manipulation
# activate package readxl for import the data
library(dplyr)
library(readxl)
# import data
mydata <- read_excel("dummydata.xlsx")
mydata
## # A tibble: 25 x 11
##    id    kd_kab kab     kd_kec kec      kd_desa desa    nbs     nrt no_art nama 
##    <lgl>  <dbl> <chr>    <dbl> <chr>      <dbl> <chr>   <chr> <dbl>  <dbl> <chr>
##  1 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      1      1 A    
##  2 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      1      2 B    
##  3 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      2      1 C    
##  4 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      2      2 D    
##  5 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      2      3 E    
##  6 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      3      1 F    
##  7 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      3      2 G    
##  8 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      3      3 H    
##  9 NA         1 PACITAN     10 DONOROJO       3 KALAK   009B      3      4 I    
## 10 NA         1 PACITAN     10 DONOROJO       4 SENDANG 014P      1      1 AA   
## # ... with 15 more rows
# change kd_kab in 2 digits
# change kd_kec in 3 digits
# change kd_desa in 3 digits
mydata <- mydata %>%
  mutate(kd_kab = case_when(
    kd_kab < 10 ~ paste0("0", kd_kab),
    TRUE ~ as.character(kd_kab)),
    kd_kec = case_when(
    kd_kec < 10 ~ paste0("00", kd_kec),
    kd_kec < 100 ~ paste0("0", kd_kec),
    TRUE ~ as.character(kd_kec)),
    kd_desa = case_when(
    kd_desa < 10 ~ paste0("00", kd_desa),
    kd_desa < 100 ~ paste0("0", kd_desa),
    TRUE ~ as.character(kd_desa))
  )
# show the result
mydata
## # A tibble: 25 x 11
##    id    kd_kab kab     kd_kec kec      kd_desa desa    nbs     nrt no_art nama 
##    <lgl> <chr>  <chr>   <chr>  <chr>    <chr>   <chr>   <chr> <dbl>  <dbl> <chr>
##  1 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      1      1 A    
##  2 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      1      2 B    
##  3 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      2      1 C    
##  4 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      2      2 D    
##  5 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      2      3 E    
##  6 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      3      1 F    
##  7 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      3      2 G    
##  8 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      3      3 H    
##  9 NA    01     PACITAN 010    DONOROJO 003     KALAK   009B      3      4 I    
## 10 NA    01     PACITAN 010    DONOROJO 004     SENDANG 014P      1      1 AA   
## # ... with 15 more rows
# fill id with combination kd_kab, kd_kec, kd_desa, nbs, and nrt
mydata <- mydata %>%
  mutate(id = paste(kd_kab, kd_kec, kd_desa, nbs, nrt, sep = ""))
# show the result
mydata
## # A tibble: 25 x 11
##    id            kd_kab kab     kd_kec kec      kd_desa desa    nbs     nrt no_art nama 
##    <chr>         <chr>  <chr>   <chr>  <chr>    <chr>   <chr>   <chr> <dbl>  <dbl> <chr>
##  1 01010003009B1 01     PACITAN 010    DONOROJO 003     KALAK   009B      1      1 A    
##  2 01010003009B1 01     PACITAN 010    DONOROJO 003     KALAK   009B      1      2 B    
##  3 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      1 C    
##  4 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      2 D    
##  5 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      3 E    
##  6 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      1 F    
##  7 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      2 G    
##  8 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      3 H    
##  9 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      4 I    
## 10 01010004014P1 01     PACITAN 010    DONOROJO 004     SENDANG 014P      1      1 AA   
## # ... with 15 more rows
# make a new variable for split base then make it unique
mydata <- mydata %>%
  mutate(splitbase = paste(kd_kab, kd_kec, kd_desa, nbs, sep = ""))

# unique nbs
myunique <- unique(mydata$splitbase)

# show the result
mydata
## # A tibble: 25 x 12
##    id            kd_kab kab     kd_kec kec      kd_desa desa    nbs     nrt no_art nama  splitbase   
##    <chr>         <chr>  <chr>   <chr>  <chr>    <chr>   <chr>   <chr> <dbl>  <dbl> <chr> <chr>       
##  1 01010003009B1 01     PACITAN 010    DONOROJO 003     KALAK   009B      1      1 A     01010003009B
##  2 01010003009B1 01     PACITAN 010    DONOROJO 003     KALAK   009B      1      2 B     01010003009B
##  3 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      1 C     01010003009B
##  4 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      2 D     01010003009B
##  5 01010003009B2 01     PACITAN 010    DONOROJO 003     KALAK   009B      2      3 E     01010003009B
##  6 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      1 F     01010003009B
##  7 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      2 G     01010003009B
##  8 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      3 H     01010003009B
##  9 01010003009B3 01     PACITAN 010    DONOROJO 003     KALAK   009B      3      4 I     01010003009B
## 10 01010004014P1 01     PACITAN 010    DONOROJO 004     SENDANG 014P      1      1 AA    01010004014P
## # ... with 15 more rows
# export splited data in csv format and named it using splitbase
# as default, separation of the element of data with comma "," but in this case we use ";"
# the result can be found in Documents
for (i in myunique) {
  mysubset <- subset(mydata, splitbase == i)
  assign(paste0("data_list", i), mysubset)

  # Mengekspor subset data frame menjadi file CSV
  write.csv(mysubset[-12], file = paste0("data_list", i, ".csv"),
            row.names = FALSE, fileEncoding = "UTF-8", sep = ";")
}
## Warning in write.csv(mysubset[-12], file = paste0("data_list", i, ".csv"), : attempt to set 'sep' ignored

## Warning in write.csv(mysubset[-12], file = paste0("data_list", i, ".csv"), : attempt to set 'sep' ignored

## Warning in write.csv(mysubset[-12], file = paste0("data_list", i, ".csv"), : attempt to set 'sep' ignored

The results seem below:

Data list by id

This is the end of our sharing, thank you for your attention. Feel free to like, share, and leave a command as your support to this blog. Happy learning!

Komentar

Postingan populer dari blog ini

Mencari P - Value dan Titik Kritis Uji F, Uji t, Uji Chi Square, dan Uji Z Normal dengan R

Mencari nilai p-value dan titik kritis Bagi teman-teman yang pernah mengenal statistika, pasti familier dengan istilah p-value dan titik kritis. P-value biasanya didefinisikan sebagai probabiltas atau peluang maksimal yang diamati dari hasil uji statistik, bahasa gampangnya adalah besarnya kesalahan penelitian berdasarkan uji statistik. Sebagai contoh sederhana, dari 100 orang dengan nama masing-masing dan diklasifikasikan ke dalam gender nama perempuan dan nama laki-laki, didapatkan nilai p-value uji statistiknya sebesar 0,05 atau 5%. Itu artinya, dari 100 orang, ada kemungkinan sebanyak 5 orang yang namanya salah klasifikasi. Dari namanya terdeteksi sebagai nama perempuan, padahal aktualnya yang bersangkutan bergender laki-laki. Sedangkan titik kritis atau titik uji adalah nilai batas pengujian hipotesis statistik, apakah masuk dalam wilayah tolak hipotesis, ataukah gagal menolaknya. Titik ini berkaitan erat dengan nilai p-value . Kalau biasanya kita mendapatkan kedua nilai ini da...

Cara Mendowload dan Install R serta RStudio di Windows (Step by Step)

Cara Download dan Install R serta R Studio di Windows Halo teman-teman, mohon maaf karena beberapa waktu ini, blog ini sempat vakum dari unggahan. Kali ini saya akan coba berbagai mengenai bagaimana cara mengunduh ( download ) dan menginstal ( install ) program R sekaligus R Studio khususnya di Windows. Unggahan kali ini sedikit terbalik karena semestinya saya unggah terlebih dahulu pertama kali di blog ini, namun bukan masalah, mengingat kemarin ada beberapa pihak yang meminta untuk menerangkap bagaimana tahapan mengunduh dan instalasi R dan R Studio, jadinya saya dahulukan pada unggahan ini sebelum pembahasan mengenai Data Mining , Data Science , atau bahasan Big Data kita terlampau jauh. Baik, kita akan mulai dengan bagaimana mengunduh R dan R Studio melalui mesin pencari Google. R dan R Studio ini memang beberapa waktu terakhir ini booming , apalagi dengan munculnya konsep mengenai Big Data , Data Modelling, Data Mining, dan Data Science serta Data Visualization . Sebenarnya, men...

Analisis Tipologi Klassen (Klassen Typology) dan Visualisasi Spasialnya dengan R

Tipologi Klassen dan visualisasinya dengan R Halo teman-teman, sebelumnya kita telah membahas tentang analisis Shift Share dan Location Quotient (LQ) dengan menggunakan R. Kali ini, kita akan membahas mengenai satu lagi alat analisis yang sebenarnya merupakan alat analisis tiga serangkai dari SS dan LQ, yaitu analisis Tipologi Klassen. Dalam penelitian ekonomi kewilayahan, ketiga analisis ini seringkali digunakan, baik dalam rangka melihat perkembangan dan transformasi struktur ekonomi suatu wilayah maupun melihat keunggulan kompetitif dan keunggulan komparatif wilayah satu dengan wilayah lainnya dengan mengacu wilayah referensi. Terlebih dulu, sebelum melakukan visualisasi spasial menggunakan fungsi plot(), ada baiknya kita bahas terlebih dahulu mengenai Tipologi Klassen itu sendiri. Tipologi Klassen merupakan teknik pengelompokan sektor, subsektor, lapangan usaha, atau komoditas tertentu di wilayah analisis berdasarkan pertumbuhan nilai tambah wilayah analisis terhadap nasional atau...