David:
Hate to bother you, but because you have seen my code perhaps
you can tell me what I am doing wrong.
I want to replicate my original Response data by 0 times, called ResponseX10.
All is good until the first calculation, cum_R.
Would you kindly, assist me?
Thanks.
Bruce
****
Response <- data.frame(Response=rbinom(50,1,0.2), yhat=runif(50))
Response <- Response[order(Response$yhat,decreasing=TRUE),]

ResponseX10 <- do.call(rbind, replicate(10, Response, simplify=FALSE))

ResponseX10    <- ResponseX10[order(ResponseX10$yhat,decreasing=TRUE),]

ResponseX10[[2]] <- NULL
ResponseX10

cum_R    <- cumsum(Response)
cum_R
*******

Bruce Ratner, Ph.D.
The Significant Statistician™
(516) 791-3544
Statistical Predictive Analtyics -- www.DMSTAT1.com
Machine-Learning Data Mining and Modeling -- www.GenIQ.net
David L Carlson wrote:
You can rename the columns with colnames() before passing it to xtable. This 
will let you use characters that data.frame would automatically convert.

I don't see an easy way to center the columns when printing an html file. If 
you are not making too many of these, you could open the .html file into a 
WYSIWIG html editor such as BlueGriffon, make the changes and save the file. If 
you have Microsoft Excel and Word, another fallback solution is to read the 
.html file into Excel where you have a wide variety of styles.

David C

-----Original Message-----
From: BR_email [mailto:b...@dmstat1.com]
Sent: Thursday, April 20, 2017 4:31 PM
To: David L Carlson <dcarl...@tamu.edu>; r-help@r-project.org
Subject: Re: [R] Looking for a package to replace xtable

David:
All is perfect, almost - after I ran your corrections.
Is there a way I can have more control of the column names, i.e.,
not be restricted to abbreviations headings, and center-justify?

Thanks a lot, nice.
Bruce

David L Carlson 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