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