183 votes

Ce n' .SD stand de données.table en R

.SD paraît utile, mais je ne sais pas vraiment ce que je fais avec elle. Que fait-il? Pourquoi est-il une période précédente (arrêt complet). Ce qui se passe lorsque je l'utiliser?

J'ai lu ".SD est un ensemble de données.tableau contenant le sous-ensemble de x données pour chaque groupe, à l'exclusion de la colonne de groupe(s). Il peut être utilisé lors d'un regroupement par moi, quand groupement de par des par des, clé, et ad-hoc par"

Est-ce à dire que la fille de données.les tableaux sont conservés en mémoire pour la prochaine opération?

214voto

Josh O'Brien Points 68397

.SD signifie quelque chose comme "Subset d' Data.tableau". Il n'y a pas d'importance pour l'initiale ".", à l'exception du fait qu'il rend encore plus improbable qu'il y aura un affrontement avec un définis par l'utilisateur nom de la colonne.

Si c'est vos données.tableau:

DT = data.table(x=rep(c("a","b","c"),each=2), y=c(1,3), v=1:6)
setkey(DT, y)
DT
#      y x v
# [1,] 1 a 1
# [2,] 1 b 3
# [3,] 1 c 5
# [4,] 3 a 2
# [5,] 3 b 4
# [6,] 3 c 6

Cela peut vous aider à voir ce qu' .SD est:

DT[, .SD[,paste(x,v, sep="", collapse="_")], by=y]
#      y       V1
# [1,] 1 a1_b3_c5
# [2,] 3 a2_b4_c6

Fondamentalement, l' by=y déclaration des pauses les données d'origine.table dans l'un de ces deux sous-data.tables

DT[,print(.SD),by=y]
     x v   # 1st sub-data.table, called '.SD' while it's being operated on
[1,] a 1
[2,] b 3
[3,] c 5
     x v   # 2nd sub-data.table, ALSO called '.SD' while it's being operated on
[1,] a 2
[2,] b 4
[3,] c 6

et opère sur eux.

Pendant qu'il fonctionne sur un ou l'autre, il permet de se référer à la sous-data.table en utilisant le pseudo-nom du/de la poignée/du symbole .SD. C'est très pratique, car vous pouvez accéder et de faire fonctionner sur les colonnes, comme si vous étiez assis à la ligne de commande de travail avec un seul de données.table appelée .SD ... sauf qu'ici, data.table permettra d'effectuer ces opérations sur chaque sous-data.table définies par la combinaison de la clé, "coller" ensemble et renvoyer les résultats dans un seul data.table!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X