Manipulation de données avec data.table en R
Matt Dowle, Arun Srinivasan
Instructors, DataCamp
Disons que vous voulez changer la 2e ligne de la colonne « y » à 10
df <- data.frame(x = 1:5, y = 6:10)
df
x y
1 6
2 7
df$y[2] <- 10
Dans R < v3.1.0, cette opération faisait une copie profonde de tout le data.frame
# ce qui se passe en interne avant R v3.1.0
tmp <- <deep copy of "df">
tmp$y[2] <- 10
df <- tmp
En v3.1.0, des améliorations ont permis de copier en profondeur seulement la colonne mise à jour
Ici, seules les colonnes a et b sont copiées en profondeur dans l'opération ci-dessous sur df
df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12)
df[1:2] <- lapply(df[1:2], function(x) ifelse(x%%2, x, NA))
df
a b c d
1 NA 7 10
NA 5 8 11
3 NA 9 12
data.table met à jour les colonnes sur place, c'est‑à‑dire par référence
Vous n'avez donc pas à réassigner le résultat à une variable
Aucune copie de colonne n'est faite pendant la modification des valeurs
data.table utilise le nouvel opérateur := pour ajouter/mettre à jour/supprimer des colonnes par référence
batrips[, c("is_dur_gt_1hour", "week_day") := list(duration > 3600, wday(start_date))]# Pour ajouter une seule colonne, les guillemets ne sont pas nécessaires batrips[, is_dur_gt_1hour := duration > 3600]
batrips[, `:=`(is_dur_gt_1hour = NULL,
start_station = toupper(start_station))]
Manipulation de données avec data.table en R