David:
Thanks so much. I will recode and let you know how it works out. 
Bruce

______________
Bruce Ratner PhD
The Significant Statistician™
(516) 791-3544
Statistical Predictive Analytics -- www.DMSTAT1.com
Machine-Learning Data Mining -- www.GenIQ.net



> On Apr 20, 2017, at 4:31 PM, David L Carlson <dcarl...@tamu.edu> wrote:
> 
> #1 You can remove the rownames by adding the argument include.rownames=FALSE 
> to print.xtable():
> 
> print.xtable(DECILE_TABLE, type="html",file="DecileTable.html", 
> include.rownames=FALSE)
> 
> #2 Prevent data.frame from converting the first column to a factor and use 
> NAs for the columns where you don't want totals:
> 
> dec_mean_wt_R_nRDL <- cbind(DECILE, dec_mean_wt_R_nRD, Cum_Lift, 
> stringsAsFactors=FALSE)
> 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(c(colSums(dec_mean_wt_R_nRDL[ , 2:3]), rep(NA, 
> 3)),nrow=1)))
> 
> Now the table should print without totals in the last three columns and no 
> rownames.
> 
> attach is discouraged since it can lead to confusion when a variable name 
> exists in the environment and in a data frame (or multiple data frames). It 
> is easy to forget which version of the variable you are using. More typing, 
> but less subject to confusion would be to use with(), eg:
> 
> Cum_RespRate          <- with(dec_mean_wt_R_nR, (Cum_R/Cum_n)*100)
> 
> This way it is always clear where Cum_R and Cum_n are coming from. In your 
> code cum_R = Cum_R and cum_n = Cum_n so you could also use
> 
> Cum_RespRate          <- cum_R/cum_n)*100
> 
> -------------------------------------
> David L Carlson
> Department of Anthropology
> Texas A&M University
> College Station, TX 77840-4352
> 
> -----Original Message-----
> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of BR_email
> Sent: Thursday, April 20, 2017 12:10 PM
> To: r-help@r-project.org
> Subject: [R] Looking for a package to replace xtable
> 
> 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")
> 
> ****
> 
> --
> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to