[R] Looking for a package to replace xtable

BR_email br at dmstat1.com
Thu Apr 20 19:09:40 CEST 2017


R-helper:
Below, code for generating a decile table.
I am using the xtable package, but it is not quite right for the output.
Issue #1. xtable inserts an unwanted column, before the first derived 
column DECILE
Issue #2. In the last line "Total" I manually sum all columns, even 
though I only want the sums for second and third columns.
If I calculate only second and third columns, the remaining columns 
would have NAs.
Either scenario is not desired.

Any suggestions, would be appreciated, for a package that addresses 
issue #1,
and has an option for summing the desired two columns.

Lastly, I read that one should rarely use "attach()", but if I don't the 
program will not run.
An explanation of why I need attach() would also be appreciated.
Thanks.
Bruce

  ****
Response <- data.frame(Response=rbinom(50,1,0.2), yhat=runif(50))
Response <- Response[order(Response$yhat,decreasing=TRUE),]

Response[[2]] <- NULL

cum_R    <- cumsum(Response)
sam_size <- nrow(Response)

cum_n    <- seq(1:1,sam_size)
wt       <- rep(c(1), times=sam_size)
cum_wt   <- cumsum(wt)

dec      <- (cum_n/sam_size)
decc     <- floor((cum_n*10)/(sam_size+1))

dec_mean <- aggregate(Response, by=list(decc), mean)

dd_        <- data.frame(cum_R, sam_size, cum_wt, cum_n, decc)
dd  <- cbind(Response, dd_)
names(dd)[2] <- "cum_R"

dec_mean    <- aggregate(Response ~ decc, dd, mean)

wt         <- rep(c(1), times=sam_size)
cum_wt     <- aggregate(wt        ~ decc, dd, sum)
cum_R      <- aggregate(Response  ~ decc, dd, sum)

dec_mean_wt    <- cbind(dec_mean, cum_wt)
dec_mean_wt    <- dec_mean_wt[-3]

dec_mean_wt_R  <- cbind(dec_mean_wt, cum_R)
dec_mean_wt_R  <- dec_mean_wt_R[-4]

colnames(dec_mean_wt_R) <- c("Decile", "Resp_Rate", "No_Inds",
     "No_Resp")

dec_mean_wt_R  <- dec_mean_wt_R[,c(1,3,4,2)]

cum_n        <- dec_mean_wt_R[2]
cum_n        <- cumsum(cum_n)

cum_R        <- dec_mean_wt_R[3]
cum_R        <- cumsum(cum_R)

dec_mean_wt_R_nR  <- cbind(dec_mean_wt_R, cum_n, cum_R)

colnames(dec_mean_wt_R_nR) <-
     c("Decile", "No_Inds", "No_Resp", "RespRate",
                 "Cum_n", "Cum_R")

dec_mean_wt_R_nR

attach(dec_mean_wt_R_nR)
Cum_RespRate          <- (Cum_R/Cum_n)*100

options(digits=4)
Decile_RespRate          <- (No_Resp/No_Inds)

dec_mean_wt_R_nRD  <- cbind(dec_mean_wt_R_nR, Cum_RespRate, Decile_RespRate)

avg_RR             <- dec_mean_wt_R_nRD[10,7]
Cum_Lift           <- (Cum_RespRate/avg_RR)*100

DECILE             <- c("top","2","3","4","5","6","7","8","9","bot")
dec_mean_wt_R_nRDL <- cbind(DECILE, dec_mean_wt_R_nRD, Cum_Lift)
dec_mean_wt_R_nRDL <- dec_mean_wt_R_nRDL[,c(1,3,4,9,8,10)]

total_line<-cbind(DECILE="Total",
  as.data.frame(matrix(colSums(dec_mean_wt_R_nRDL[-1]),nrow=1)))

names(total_line)<-names(dec_mean_wt_R_nRDL)
dec_mean_wt_R_nRDLT<-rbind(dec_mean_wt_R_nRDL,total_line)
decile_table <- dec_mean_wt_R_nRDLT
decile_table

#Install the xtable package: install.packages("xtable")
#Load the xtable package:
library(xtable)

DECILE_TABLE <-xtable(decile_table)
DECILE_TABLE

print.xtable(DECILE_TABLE, type="html",file="C:/R_Data/DecileTable.html")

****

--



More information about the R-help mailing list