2016-08-29 1 views
2

Y at-il un moyen d'ajouter une colonne au résultat de la fonction tidy du package balai qui peut agir en reliant la colonne de terme aux noms d'origine utilisés dans l'argument formula et leurs colonnes dans l'argument data.Ajout d'une colonne pour la catégorie des coeffients glm dans les résultats de balai

Par exemple, si je lance le I suivant obtenir:

library(ggplot2) 
library(dplyr) 

mod <- glm(mpg ~ wt + qsec + as.factor(carb), data = mtcars) 

tidy(mod) 

#    term  estimate std.error statistic  p.value 
# 1  (Intercept) 21.132995090 7.5756463 2.78959633 1.017187e-02 
# 2    wt -4.916303175 0.6747590 -7.28601380 1.584408e-07 
# 3    qsec 0.843355538 0.3930252 2.14580532 4.221188e-02 
# 4 as.factor(carb)2 0.004133826 1.5321134 0.00269812 9.978695e-01 
# 5 as.factor(carb)3 -0.755346006 2.3451222 -0.32209239 7.501715e-01 
# 6 as.factor(carb)4 -0.489721798 2.0628564 -0.23739985 8.143615e-01 
# 7 as.factor(carb)6 -0.886846134 3.4443957 -0.25747510 7.990068e-01 
# 8 as.factor(carb)8 -0.894783610 3.7496630 -0.23863041 8.134180e-01 

Ce que je cherche quelque chose comme ceci:

#    term  estimate std.error statistic  p.value term_base 
# 1  (Intercept) 21.132995090 7.5756463 2.78959633 1.017187e-02 
# 2    wt -4.916303175 0.6747590 -7.28601380 1.584408e-07   wt 
# 3    qsec 0.843355538 0.3930252 2.14580532 4.221188e-02  qsec 
# 4 as.factor(carb)2 0.004133826 1.5321134 0.00269812 9.978695e-01  carb 
# 5 as.factor(carb)3 -0.755346006 2.3451222 -0.32209239 7.501715e-01  carb 
# 6 as.factor(carb)4 -0.489721798 2.0628564 -0.23739985 8.143615e-01  carb 
# 7 as.factor(carb)6 -0.886846134 3.4443957 -0.25747510 7.990068e-01  carb 
# 8 as.factor(carb)8 -0.894783610 3.7496630 -0.23863041 8.134180e-01  carb 

Pas si dérangé si la première ligne dans cette nouvelle colonne est vide, Intercept ou 1. Juste besoin de quelque chose qui peut correspondre à la colonne terme pour les noms de variables d'origine transmis à la formule?

Modifier

Ce serait bien si elle ne dépendait pas de l'utilisation as.factor dans la formule, par exemple travaillerait sur:

mod <- glm(mpg ~ wt + qsec + carb, data = mtcars %>% mutate(carb = factor(carb))) 

tidy(mod) 

#   term  estimate std.error statistic  p.value 
# 1 (Intercept) 21.132995090 7.5756463 2.78959633 1.017187e-02 
# 2   wt -4.916303175 0.6747590 -7.28601380 1.584408e-07 
# 3  qsec 0.843355538 0.3930252 2.14580532 4.221188e-02 
# 4  carb2 0.004133826 1.5321134 0.00269812 9.978695e-01 
# 5  carb3 -0.755346006 2.3451222 -0.32209239 7.501715e-01 
# 6  carb4 -0.489721798 2.0628564 -0.23739985 8.143615e-01 
# 7  carb6 -0.886846134 3.4443957 -0.25747510 7.990068e-01 
# 8  carb8 -0.894783610 3.7496630 -0.23863041 8.134180e-01 

Répondre

2

Nous pouvons utiliser regex pour créer le 'term_base' colonne

tidy(mod) %>% 
     mutate(term_base = sub("Intercept", "", gsub(".*\\(|\\).*", "", term))) 
#    term  estimate std.error statistic  p.value term_base 
#1  (Intercept) 21.132995090 7.5756463 2.78959633 1.017187e-02   
#2    wt -4.916303175 0.6747590 -7.28601380 1.584408e-07  wt 
#3    qsec 0.843355538 0.3930252 2.14580532 4.221188e-02  qsec 
#4 as.factor(carb)2 0.004133826 1.5321134 0.00269812 9.978695e-01  carb 
#5 as.factor(carb)3 -0.755346006 2.3451222 -0.32209239 7.501715e-01  carb 
#6 as.factor(carb)4 -0.489721798 2.0628564 -0.23739985 8.143615e-01  carb 
#7 as.factor(carb)6 -0.886846134 3.4443957 -0.25747510 7.990068e-01  carb 
#8 as.factor(carb)8 -0.894783610 3.7496630 -0.23863041 8.134180e-01  carb 

Le as.factor peut être retiré de la 'terme' et si nous mutate le CARB 'à factor avant la glm étape

mtcars %>% 
    mutate(carb = factor(carb)) %>% 
    glm(formula = mpg ~wt + qsec + carb, data = .) %>% 
    tidy(.) %>% 
    mutate(term_base = sub("\\(.*\\)|\\d+", "", term)) 
#  term  estimate std.error statistic  p.value term_base 
#1 (Intercept) 21.132995090 7.5756463 2.78959633 1.017187e-02   
#2   wt -4.916303175 0.6747590 -7.28601380 1.584408e-07  wt 
#3  qsec 0.843355538 0.3930252 2.14580532 4.221188e-02  qsec 
#4  carb2 0.004133826 1.5321134 0.00269812 9.978695e-01  carb 
#5  carb3 -0.755346006 2.3451222 -0.32209239 7.501715e-01  carb 
#6  carb4 -0.489721798 2.0628564 -0.23739985 8.143615e-01  carb 
#7  carb6 -0.886846134 3.4443957 -0.25747510 7.990068e-01  carb 
#8  carb8 -0.894783610 3.7496630 -0.23863041 8.134180e-01  carb 
+1

Oh mon gosh.Your répondre à ma modifier avant de terminer ed le tapant. Merci beaucoup. – gjabel