user734124
user734124

Reputation: 499

how to delete the factornames in a summary of a regression with R

I wonder how to delete the factornames in a summary. For example I have the factor gender with units (M,W). When I print out the summary the name of the variable is:

genderM

But what I would like to see is just

M

Is it possible to command R to get rid of the factornames when computing the summary of a linear model?

Upvotes: 0

Views: 718

Answers (2)

EDi
EDi

Reputation: 13300

This works also (with the example of Andrie):

outp <- summary(fit)
attr(outp$coefficients, "dimnames")[[1]][2] <- levels(group)[2]
outp

Result:

> outp

Call:
lm(formula = weight ~ group)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.0710 -0.4938  0.0685  0.2462  1.3690 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   5.0320     0.2202  22.850 9.55e-15 ***
Trt          -0.3710     0.3114  -1.191    0.249    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.6964 on 18 degrees of freedom
Multiple R-squared: 0.07308,    Adjusted R-squared: 0.02158 
F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249 

Upvotes: 0

Andrie
Andrie

Reputation: 179488

You can heed the very sensible advice by @Joris Meys. (In fact, I suggest you do.) Or you can use a kludgy little workaround with a bit of regex and capture.output:

# Set up data and fit model
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
fit <- lm(weight ~ group)

Now for the manipulation:

  1. grab the results of summary.lm using capture.output
  2. use gsub to substitute each occurrence of your factor levels

The code:

# Capture output
sfit <- capture.output(print(summary(fit)))

gsub("groupTrt", "Trt     ", sfit)

The results:

 [1] ""                                                               
 [2] "Call:"                                                          
 [3] "lm(formula = weight ~ group)"                                   
 [4] ""                                                               
 [5] "Residuals:"                                                     
 [6] "    Min      1Q  Median      3Q     Max "                       
 [7] "-1.0710 -0.4938  0.0685  0.2462  1.3690 "                       
 [8] ""                                                               
 [9] "Coefficients:"                                                  
[10] "            Estimate Std. Error t value Pr(>|t|)    "           
[11] "(Intercept)   5.0320     0.2202  22.850 9.55e-15 ***"           
[12] "Trt          -0.3710     0.3114  -1.191    0.249    "           
[13] "---"                                                            
[14] "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 "
[15] ""                                                               
[16] "Residual standard error: 0.6964 on 18 degrees of freedom"       
[17] "Multiple R-squared: 0.07308,\tAdjusted R-squared: 0.02158 "      
[18] "F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249 "            
[19] ""                    

Upvotes: 3

Related Questions