What do you think should be in the empty cells? Zero? NA? Empty strings? There can't just be nothing... Here's an example with empty strings "" as the filler element - but do consider carefully what Duncan wrote.
test <- data.frame(first=c(1,2), second=c(3,4)) typeof(test[1,1]) # double # rbind() a vector that repeats the "empty" element one-less-then-ncols() times, # and has the column sum as its last element. test <- rbind(test, c(rep("", ncol(test)-1), sum(test$second))) test first second 1 1 3 2 2 4 3 7 # but...! typeof(test[1,1]) # character! typeof(test[2,2]) # also character! By adding characters to your columns, you cast all of your data into character type! If you want to *do* anything with the number, you'll need to cast it back to numeric. Or use 0 or NA as the filler element. test <- rbind(test, c(rep(NA, ncol(test)-1), sum(test$second))) But anyway ... as others have said, you may want to reconsider the logic of your approach. B. On Nov 30, 2014, at 8:45 PM, Muhuri, Pradip (SAMHSA/CBHSQ) <pradip.muh...@samhsa.hhs.gov> wrote: > Hi Boris, > > Sorry for not being explicit when replying to your first email. I wanted to > say it does not work when row-binding. I want the following output. Thanks, > Pradip > > > 1 1 3 > 2 2 4 > Total 7 > > ################### Below is the console ########## >> test <- data.frame(first=c(1,2), second=c(3,4)) >> test > first second > 1 1 3 > 2 2 4 >> >> sum(test$second) > [1] 7 >> >> rbind(test, sum(test$second)) > first second > 1 1 3 > 2 2 4 > 3 7 7 > > Pradip K. Muhuri, PhD > SAMHSA/CBHSQ > 1 Choke Cherry Road, Room 2-1071 > Rockville, MD 20857 > Tel: 240-276-1070 > Fax: 240-276-1260 > > -----Original Message----- > From: Boris Steipe [mailto:boris.ste...@utoronto.ca] > Sent: Sunday, November 30, 2014 5:51 PM > To: Muhuri, Pradip (SAMHSA/CBHSQ) > Cc: r-help@r-project.org > Subject: Re: [R] R dplyr solution vs. Base R solution for the slect column > total > > No it doesn't ... > consider: > > test <- data.frame(first=c(1,2), second=c(3,4)) test > first second > 1 1 3 > 2 2 4 > > sum(test$second) > [1] 7 > > > > > On Nov 30, 2014, at 3:48 PM, Muhuri, Pradip (SAMHSA/CBHSQ) > <pradip.muh...@samhsa.hhs.gov> wrote: > >> Hi Boris, >> >> That gives me the total for each of the 6 columns of the data frame. I want >> the column sum just for the last column. >> >> Thanks, >> >> Pradip Muhuri >> >> >> >> -----Original Message----- >> From: Boris Steipe [mailto:boris.ste...@utoronto.ca] >> Sent: Sunday, November 30, 2014 12:50 PM >> To: Muhuri, Pradip (SAMHSA/CBHSQ) >> Cc: r-help@r-project.org >> Subject: Re: [R] R dplyr solution vs. Base R solution for the slect >> column total >> >> try: >> >> sum(test$count) >> >> >> B. >> >> >> On Nov 30, 2014, at 12:01 PM, Muhuri, Pradip (SAMHSA/CBHSQ) >> <pradip.muh...@samhsa.hhs.gov> wrote: >> >>> Hello, >>> >>> I am looking for a dplyr or base R solution for the column total - JUST FOR >>> THE LAST COLUMN in the example below. The following code works, giving me >>> the total for each column - This is not exactly what I want. >>> rbind(test, colSums(test)) >>> >>> I only want the total for the very last column. I am struggling with >>> this part of the code: rbind(test, c("Total", colSums(test, ...))) I have >>> searched for a solution on Stack Oveflow. I found some mutate() code for >>> the cumsum but no luck for the select column total. Is there a dplyr >>> solution for the select column total? >>> >>> Any hints will be appreciated. >>> >>> Thanks, >>> >>> Pradip Muhuri >>> >>> >>> ####### The following is from the console - the R script with reproducible >>> example is also appended. >>> >>> >>> mrjflag cocflag inhflag halflag oidflag count >>> 1 0 0 0 0 0 256 >>> 2 0 0 0 1 1 256 >>> 3 0 0 1 0 1 256 >>> 4 0 0 1 1 1 256 >>> 5 0 1 0 0 1 256 >>> 6 0 1 0 1 1 256 >>> 7 0 1 1 0 1 256 >>> 8 0 1 1 1 1 256 >>> 9 1 0 0 0 1 256 >>> 10 1 0 0 1 1 256 >>> 11 1 0 1 0 1 256 >>> 12 1 0 1 1 1 256 >>> 13 1 1 0 0 1 256 >>> 14 1 1 0 1 1 256 >>> 15 1 1 1 0 1 256 >>> 16 1 1 1 1 1 256 >>> 17 8 8 8 8 15 4096 >>> >>> >>> >>> ####################### below is the reproducible example >>> ######################## >>> library(dplyr) >>> # generate data >>> dlist <- rep( list( 0:1 ), 4 ) >>> data <- do.call(expand.grid, drbind) >>> data$id <- 1:nrow(data) >>> names(data) <- c('mrjflag', 'cocflag', 'inhflag', 'halflag') >>> >>> >>> # mutate a column and then sumamrize >>> test <- data %>% >>> mutate(oidflag= ifelse(mrjflag==1 | cocflag==1 | inhflag==1 | >>> halflag==1, 1, 0)) %>% >>> group_by(mrjflag,cocflag, inhflag, halflag, oidflag) %>% >>> summarise(count=n()) %>% >>> arrange(mrjflag,cocflag, inhflag, halflag, oidflag) >>> >>> >>> # This works, giving me the total for each column - This is not what I >>> exactly want. >>> rbind(test, colSums(test)) >>> >>> # I only want the total for the very last column rbind(test, >>> c("Total", colSums(test, ...))) >>> >>> Pradip K. Muhuri, PhD >>> SAMHSA/CBHSQ >>> 1 Choke Cherry Road, Room 2-1071 >>> Rockville, MD 20857 >>> Tel: 240-276-1070 >>> Fax: 240-276-1260 >>> >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> 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 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.