Rownames

Pernahkah melihat data frame dimana kolom pertama tidak ada nama dan anda tidak tahu bagaimana untuk merujuk kolom tersebut? Sekiranya anda pernah menemui masalah tersebut sila baca penerangan dan penyelesaian di sini.

Situasi ini adalah disebabkan nama tersebut ialah nama untuk barisan sahaja i.e rownames, seperti nama untuk kolom i.e colnames. Contohnya:

DT <- mtcars[1:5, 1:5]
DT

Di sini anda lihat kolom pertama tidak mempunyai nama. Untuk mengetahui nama barisan boleh gunakan rownames(DT).

:                    mpg cyl disp  hp drat
: Mazda RX4         21.0   6  160 110 3.90
: Mazda RX4 Wag     21.0   6  160 110 3.90
: Datsun 710        22.8   4  108  93 3.85
: Hornet 4 Drive    21.4   6  258 110 3.08
: Hornet Sportabout 18.7   8  360 175 3.15

Untuk menggunakan kolom pertama dalam kode-kode, kolom pertama harus diberikan nama kolom. Hanya menggunakan DT[1] tidak akan berjaya. Cara untuk menukarkan rownames ke colnames boleh dibuat seperti berikut:

DT <- mtcars[1:5, 1:5]

## cara 1
DT2 <- cbind(rownames(DT), DT)
rownames(DT2) <- NULL
names(DT2)[1] <- "nama"

## cara 2
DT3 <- DT
namesDT <- names(DT3)
DT3 <- setNames(cbind(rownames(DT3), DT3, row.names = NULL),
                c("nama", namesDT))

R> DT3
               nama  mpg cyl disp  hp drat
1         Mazda RX4 21.0   6  160 110 3.90
2     Mazda RX4 Wag 21.0   6  160 110 3.90
3        Datsun 710 22.8   4  108  93 3.85
4    Hornet 4 Drive 21.4   6  258 110 3.08
5 Hornet Sportabout 18.7   8  360 175 3.15

Sekarang kolom pertama mempunyai nama dan boleh dirujuk dalam memanipulasi data. Rownames sekarang digantikan ke nombor 1 ke 5.

Untuk menggunakan cara data.table adalah seperti begini:

DT4 <- mtcars[1:5, 1:5]
nama2 <- rownames(DT4)

library(data.table)
setDT(DT4)
DT4[, nama := nama2]
DT4

Kolom nama daripada rownames dimasukkan

:     mpg cyl disp  hp drat              nama
: 1: 21.0   6  160 110 3.90         Mazda RX4
: 2: 21.0   6  160 110 3.90     Mazda RX4 Wag
: 3: 22.8   4  108  93 3.85        Datsun 710
: 4: 21.4   6  258 110 3.08    Hornet 4 Drive
: 5: 18.7   8  360 175 3.15 Hornet Sportabout

Colnames

Kadang-kadang kita ingin menukarkan nama kolom ke nama lain. Untuk menukarkan nama kolom boleh dibuat dengan pelbagai cara. Cara setNames boleh dirujuk seperti di atas. Antara cara-cara lain ialah seperti berikut:

DT <- mtcars[1:5, 1:5]

nama1 <- c("cth1", "cth2")
names(DT)[c(3, 5)] <- nama1
DT

Nama untuk kolom 3 dan 5 ditukar

:                    mpg cyl cth1  hp cth2
: Mazda RX4         21.0   6  160 110 3.90
: Mazda RX4 Wag     21.0   6  160 110 3.90
: Datsun 710        22.8   4  108  93 3.85
: Hornet 4 Drive    21.4   6  258 110 3.08
: Hornet Sportabout 18.7   8  360 175 3.15

Cara lain ialah menggunakan pakaj data.table.

DT <- mtcars[1:5, 1:5]

library(data.table)
setDT(DT)

nama2 <- c("kol1", "kol2")
setnames(DT, c("mpg", "hp"), nama2)
DT

Kolom mpg dan hp ditukarkan ke kol1 dan kol2.

:    kol1 cyl disp kol2 drat
: 1: 21.0   6  160  110 3.90
: 2: 21.0   6  160  110 3.90
: 3: 22.8   4  108   93 3.85
: 4: 21.4   6  258  110 3.08
: 5: 18.7   8  360  175 3.15
row  column 
comments powered by Disqus