Ricerca…


Osservazioni

Un data.table è una versione avanzata della classe data.frame dalla base R. Come tale, l'attributo class() è il vettore "data.table" "data.frame" e le funzioni che funzionano su un data.frame saranno anche funziona con un data.table. Ci sono molti modi per creare, caricare o forzare su un data.table, come visto qui.

Costruire un data.frame

Per copiare un data.frame come data.table, utilizzare as.data.table o 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)

Questo è raramente necessario. Un'eccezione è quando si utilizzano set di dati mtcars come mtcars , che devono essere copiati poiché non possono essere modificati sul posto.

Costruisci con data.table ()

C'è un costruttore con lo stesso nome:

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

A differenza di data.frame , data.table non costringerà le stringhe ai fattori per impostazione predefinita:

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

Leggi con fread ()

Possiamo leggere da un file di testo:

dt <- fread("my_file.csv")

A differenza di read.csv , fread leggerà le stringhe come stringhe, non come fattori di default.

Vedi [argomento su fread ] [need_a_link] per altri esempi.

Modifica un data.frame con setDT ()

Per efficienza, data.table offre un modo per modificare un data.frame o un elenco per creare un data.table sul posto:

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

# modification
setDT(DF)

Nota che non <- assegna il risultato, poiché l'oggetto DF è stato modificato sul posto.

Gli attributi di classe di data.frame verranno mantenuti:

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

Copia un altro data.table con copy ()

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

A causa del modo in cui i dati vengono manipolati, DT2 <- DT1 non farà una copia. Cioè, le successive modifiche alle colonne o altri attributi di DT2 influenzeranno anche DT1 . Quando vuoi una copia reale, usa

DT2 = copy(DT1)

Per vedere la differenza, ecco cosa succede senza una copia:

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

E con una copia:

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

Quindi le modifiche non si propagano in quest'ultimo caso.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow