2017-05-04 18 views
0

をfirst_letterとC分離する方法はあります私はきちんとデータを作成しようとしていると私は、フィールド名GLM解析カテゴリ係数

#Example: 

data(mtcars) 
library(broom) 

#Adding some new character variables 
mtcars1 <- mtcars 
mtcars1$has_leter_yn <- ifelse(grepl("[[:digit:]]" 
           , rownames(mtcars))==TRUE, "1 Y", "2 N") 

mtcars1$first_letter <- substr(rownames(mtcars), 1,1) 

mtcars1$cyl_yn <- ifelse(mtcars$cyl > 5, "Y", "N") 

mtcars1$am_yn <- ifelse(mtcars$am > 0.5, "N", "Y") 

mtcars1$hp_yn <- ifelse(mtcars$hp > 200, "POWER", "WEAK") 

#model 
mod <- glm(mpg ~ wt + first_letter + has_leter_yn + cyl_yn +am_yn + hp_yn 
     , data = mtcars1) 

#broom tidy function 
tidy(mod) 

      term estimate std.error statistic  p.value 
1  (Intercept) 25.46529192 5.155178 4.93974994 0.0001243241 
2    wt -2.38861746 1.338905 -1.78400876 0.0922815327 
3 first_letterC 4.63900549 3.751079 1.23671244 0.2330073046 
4 first_letterD 0.95497914 3.332624 0.28655476 0.7779162451 
5 first_letterF 3.78125890 3.337474 1.13297017 0.2729534747 
6 first_letterH 4.74971469 3.163074 1.50161363 0.1515430178 
7 first_letterL 4.21825272 3.570943 1.18127128 0.2537575961 
8 first_letterM 2.81979616 3.149218 0.89539568 0.3830789592 
9 first_letterP 3.44802708 3.445036 1.00086826 0.3309248121 
10 first_letterT 4.24503396 3.581256 1.18534795 0.2521854417 
11 first_letterV 0.90257581 3.474959 0.25973711 0.7981860095 
12 has_leter_yn2 N 0.06314099 1.394756 0.04527028 0.9644194087 
13   cyl_ynY -4.51802483 1.637415 -2.75924279 0.0134056327 
14   am_ynY -1.33513554 1.827695 -0.73050238 0.4750310328 
15  hp_ynWEAK 3.72962845 2.042696 1.82583649 0.0854925603 

からチャーター値を分離しようとするのですか?

将来の使用のために、データフレームに推定値、用語、&文字を使用したいと思います。どんな助けもありがとう!

+0

どういう意味ですか?係数推定名の「first_letterC」から「C」だけを得るには? –

+0

2つの列が必要です。 1つはfirst_letter、もう1つはC(と各項について)で、私はそれを説明する言葉が不明です。 –

+0

回帰の出力に2列あることを意味しますか?最終的な出力がどのように表示されるべきかを表示できますか? –

答えて

1

このようなものはありますか?

xy <- tidy(mod) 

data.frame(letter = gsub(pattern = "^(*.|first_letter)([A-Z])", replacement = "\\2", x = xy$term), 
      prepend = gsub(pattern = "^(*.|first_letter)([A-Z])", replacement = "\\1", x = xy$term), 
      oldterm = xy$term) 

      letter   prepend   oldterm 
1  Intercept)  (ntercept)  (Intercept) 
2    wt    wt    wt 
3    C first_letter first_letterC 
4    D first_letter first_letterD 
5    F first_letter first_letterF 
6    H first_letter first_letterH 
7    L first_letter first_letterL 
8    M first_letter first_letterM 
9    P first_letter first_letterP 
10    T first_letter first_letterT 
11    V first_letter first_letterV 
12 has_leter_yn2 N has_leter_yn2 N has_leter_yn2 N 
13   cyl_ynY   cyl_ynY   cyl_ynY 
14   am_ynY   am_ynY   am_ynY 
15  hp_ynWEAK  hp_ynWEAK  hp_ynWEAK 
+0

これは本当に近いです!私はhp_ynやhas_leter_ynなどの他の変数にこれを使用しようとしています。これはおもちゃの例 –

+0

@ RyanJohnですので、変数名から最後の大文字のレター(レベル)を区切るために、すべての変数で動作するはずですか? –

+0

catagoryの一部である数字を分離する方法はありますか?catagorical_var:01:level、02:level、03:level? –

関連する問題