2016-08-29 1 views
2

Gibt es eine Möglichkeit zum Hinzufügen einer Spalte zum Ergebnis der tidy-Funktion des Besenpakets, die den Begriff Spalte wieder auf die beiden ursprünglichen Namen im Argument formula beziehen kann und ihre Spalten im data Argument.Hinzufügen einer Spalte für die Kategorie der Glm-Koeffizienten in Besen-Ergebnissen

Zum Beispiel, wenn ich folgendes ich laufe bekommen:

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 

Was ich suche so etwas wie dieses:

#    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 

Nicht so, wenn die erste Zeile in dieser neuen Spalte gestört ist leer, Intercept oder 1. Brauchen Sie einfach etwas, das die Begriffsspalte den ursprünglichen Variablennamen zuordnen kann, die an die Formel übergeben werden?

bearbeiten

gut wäre, wenn es nicht auf abhing as.factor in der Formel verwendet wird, zum Beispiel funktionieren würde auf:

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 

Antwort

2

Wir regex verwenden können, die 'term_base' Spalte

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 

Die as.factor erstellen kann aus dem 'Begriff' als auch entfernt werden, wenn wir die ‚carb mutate 'zu factor vor dem glm Schritt

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 mein gosh.Your die Beantwortung meiner bearbeiten, bevor ich fertig ed tippen es. Danke vielmals. – gjabel

Verwandte Themen