Hi Boris,

Excellent point.  Yes, I want to convert it into to the numeric type.  Your 
code has worked out well on the real data set.  The issue is resolved.

Thanks so much for your help!

Pradip



-----Original Message-----
From: Boris Steipe [mailto:boris.ste...@utoronto.ca] 
Sent: Sunday, November 30, 2014 9:42 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

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.

Reply via email to