Ajout de probabilités conditionnelles à data.table dans R

Nov 04 2020

J'ai le jeu de données titanesque dans lequel je veux trouver la probabilité de survie basée sur 3 conditions. Le tableau suivant donne les probabilités.

library(PASWR2)
tab = with(TITANIC3, ftable(fare = fare > 200, pclass, sex, survived)) %>% prop.table(1) %>% round(3) * 100
tab

Existe-t-il un moyen simple d'ajouter des probabilités d'une tabtable à l'ensemble de données TITANIC3 en tant que nouvelle colonne?

Merci!

Réponses

1 stats_guy Nov 04 2020 at 16:20

Ceci peut être réalisé en utilisant le package data.table. L'objet TITANIC3est de classe data.frame. Vous devez d'abord le convertir en classe data.table. Lorsque vous utilisez data.table, vous pouvez définir de nouvelles colonnes basées sur des agrégations et une clause de regroupement directement sur une seule ligne. Exécutez simplement le code ci-dessous.

La nouvelle colonne avec la probabilité conditionnelle de survie est survival_prob. Je recommande toujours d'utiliser data.tablecar c'est le moyen le plus rapide de manipuler les données dans R. Cependant, si vous souhaitez poursuivre votre analyse avec a data.frame, utilisez simplement la commande setDF(titanic3)pour reconvertir l'objet en classe data.frame.

library(PASWR2)
library(magrittr)
library(data.table)

# convert dataset from data frame to data table 
titanic3 <- copy(TITANIC3)
setDT(titanic3)

# define new column survival_prob using by-option
titanic3[, survival_prob := round(100*mean(survived), 1), 
         by = .(fare > 200, pclass, sex)]