2016-08-29 8 views
2

formula引数で使用されている元の名前に用語列を関連付けることができる、箒パッケージのtidy関数の結果に列を追加する方法はありますかそれらの列はdata引数にあります。例えば箒の結果にglm coeffientsのカテゴリの列を追加する

私は次のことを実行する場合、私は得る:私は探しています何

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 

はこのようなものされています。この新しい列の最初の行がある場合

#    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 

ので気にされません空、Interceptまたは1。数式に渡される元の変数名に用語列を一致させることができるものだけが必要ですか?それは、例えば、式中as.factorの使用に依存していなかった場合

編集

が良いでしょう上で動作します:

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 

答えて

2

我々はas.factorは同様に、我々は「炭水化物をmutate場合は、「長期的」から削除することができ

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 

「term_base」列を作成するために正規表現を使用することができます「factorからglmステップの前に

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

ああ、私は終える前に私の編集に答える私gosh.Yourそれをタイプする。どうもありがとう。 – gjabel

関連する問題