Szukaj…


Uwagi

Data.table to ulepszona wersja klasy data.frame z bazy R. W związku z tym jej atrybutem class() jest wektor "data.table" "data.frame" a funkcje działające na data.frame również praca z tabelą danych. Istnieje wiele sposobów tworzenia, ładowania lub wymuszania tabeli danych.

Wymuś ramkę danych

Aby skopiować data.frame jako data.table, użyj as.data.table lub data.table :

DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

DT <- as.data.table(DF)
# or
DT <- data.table(DF)

Jest to rzadko konieczne. Jedynym wyjątkiem jest użycie wbudowanych zestawów danych, takich jak mtcars , które należy skopiować, ponieważ nie można ich modyfikować w miejscu.

Kompilacja za pomocą data.table ()

Istnieje konstruktor o tej samej nazwie:

DT <- data.table(
  x = letters[1:5], 
  y = 1:5, 
  z = (1:5) > 3
)
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
# 3: c 3 FALSE
# 4: d 4  TRUE
# 5: e 5  TRUE

W przeciwieństwie do data.frame , data.table nie data.table ciągów znaków na czynniki:

sapply(DT, class)
#               x           y           z 
#     "character"   "integer"   "logical" 

Wczytaj za pomocą fread ()

Możemy odczytać z pliku tekstowego:

dt <- fread("my_file.csv")

W przeciwieństwie do read.csv , fread będzie odczytywał ciągi jako ciągi, a nie jako czynniki domyślnie.

Zobacz [temat dotyczący fread ] [need_a_link], aby uzyskać więcej przykładów.

Zmodyfikuj data.frame za pomocą setDT ()

Aby zwiększyć wydajność, data.table oferuje sposób zmiany ramki data.frame lub listy w celu utworzenia tabeli data.table w miejscu:

# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

# modification
setDT(DF)

Zauważ, że nie <- przypisujemy wyniku, ponieważ obiekt DF został zmodyfikowany w miejscu.

Atrybuty klasy data.frame zostaną zachowane:

sapply(DF, class)
#         x         y         z 
#  "factor" "integer" "logical" 

Skopiuj inny plik data.table za pomocą copy ()

# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)

Ze względu na sposób manipulowania tabelami data.TT2 DT2 <- DT1 nie utworzy kopii. Oznacza to, że późniejsze modyfikacje kolumn lub innych atrybutów DT2 wpłyną również na DT1 . Jeśli chcesz prawdziwą kopię, użyj

DT2 = copy(DT1)

Aby zobaczyć różnicę, oto, co dzieje się bez kopii:

DT2 <- DT1
DT2[, w := 1:2]

DT1
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

I z kopią:

DT2 <- copy(DT1)
DT2[, w := 1:2]

DT1
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

Tak więc zmiany nie rozprzestrzeniają się w tym drugim przypadku.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow