Untuk menambah kolom baru di data.table boleh menggunakan :=
. Sekiranya ingin membuat kolom baru secara loop di pelbagai data.table, cara begini boleh dibuat. Cara-cara ini diambil dari StackOverflow.
List
Cara pertama boleh dibuat dengan mebuat list untuk semua data.table dimana kolom baru ingin ditambah.
library(data.table)
my_dts <- list (
centro = data.table(x=letters[1:5], y = 1:5),
sur = data.table(x=letters[2:7], y = 3:8),
norte = data.table(x=letters[2:10], y = 3:11)
)
st <- c("centro", "sur", "norte")
for (i in st) my_dts[[i]][, store := i]
Sekiranya rawdata belum disatukan, boleh dilaksanakan seperti begini. Cara ini membaca semua data sebagai csv dan disatukan sebagai list.
st <- c("centro", "sur", "norte")
all_stores <- do.call(
what = rbind,
args = lapply(
X = st,
FUN = function(storeNM){
temp <- fread(input = paste0(storeNM, '.csv'))
temp[, store := storeNM]
return(temp)
}
)
)
Vector
Semua data.table yang disatukan ke vektor. Cara ini menggunakan fungsi assign dan get.
for (i in st){
assign(i, get(i)[, store := i])
}