Help using Cast (Text) Version
On Jan 17, 2010, at 4:37 PM, Steve Sidney wrote:
Well now I am totally baffled !!!!!!!!!! Using sum( !is.na(b[,3])) I get the total of all col 3 except those that are NA - Great solves the first problem What I can't seem to do is use the same logic to count all the 1's in that col, which are there before I use the cast with margins. So it seems to me that somehow is wrong and is the part of my understanding that's missing. My guess is that that before using margins and sum in the cast statement the col is a character type and in order for == 1 to work I need to convert this to an integer.
Yiu can test your theory with: sum(as.integer(b[,3]) == 1) Or you could post some reproducible data using dput ....
David.
>
> Hope this helps you to understand the problem.
>
> Regards
> Steve
>
> Your help is much appreciated
> ----- Original Message ----- From: "David Winsemius" <dwinsemius at comcast.net
> >
> To: "Steve Sidney" <sbsidney at mweb.co.za>
> Cc: <r-help at r-project.org>
> Sent: Sunday, January 17, 2010 7:36 PM
> Subject: Re: [R] Help using Cast (Text) Version
>
>
>>
>> On Jan 17, 2010, at 11:56 AM, Steve Sidney wrote:
>>
>>> David
>>>
>>> Thanks, I'll try that......but no what I need is the total (1's) for
>>> each of the rows, labelled 1-6 at the top of each col in the table
>>> provided.
>>
>> Part of my confusion with your request (which remains unaddressed) is
>> what you mean by "valid". The melt-cast operation has turned a
>> bunch of
>> NA's into 0's which are now indistinguishable from the original
>> 0's. So I
>> don't see any way that operating on "b" could tell you the numbers
>> you
>> are asking for. If you were working on the original data, "res", you
>> might have gotten the column-wise "valid" counts of column 2 with
>> something like:
>>
>> sum( !is.na(res[,2]) )
>>
>>>
>>> What I guess I am not sure of is how to identify the col after
>>> the melt
>>> and cast.
>>
>> The cast object represents columns as a list of vectors. The i-th
>> column
>> is b[[i]] which could be further referenced as a vector. So the j-
>> th row
>> entry for the i-th column would be b[[i]][j].
>>
>>
>>>
>>> Steve
>>>
>>> ----- Original Message ----- From: "David Winsemius"
>>> <dwinsemius at comcast.net
>>> >
>>> To: "Steve Sidney" <sbsidney at mweb.co.za>
>>> Cc: <r-help at r-project.org>
>>> Sent: Sunday, January 17, 2010 4:39 PM
>>> Subject: Re: [R] Help using Cast (Text) Version
>>>
>>>
>>>>
>>>> On Jan 17, 2010, at 5:31 AM, Steve Sidney wrote:
>>>>
>>>>> Sorry to repeat the meassage, not sure if the HTML version has
>>>>> been
>>>>> received - Apologies for duplication
>>>>>
>>>>> Dear list
>>>>>
>>>>> I am trying to count the no of occurances in a column of a
>>>>> data frame
>>>>> and there is missing data identifed by NA.
>>>>>
>>>>> I am able to melt and cast the data correctly as well as sum the
>>>>> occurances using margins and sum.
>>>>>
>>>>> Here are the melt and cast commands
>>>>>
>>>>> bw = melt(res, id=c("lab","r"), "pf_zbw")
>>>>> b = cast(bw, lab ~ r, sum, margins = T)
>>>>>
>>>>> Sample Data (before using sum and margins)
>>>>>
>>>>> lab 1 2 3 4 5 6
>>>>> 1 4er66 1 NA 1 0 NA 0
>>>>> 2 4gcyi 0 0 1 0 0 0
>>>>> 3 5d3hh 0 0 0 NA 0 0
>>>>> 4 5d3wt 0 0 0 0 0 0
>>>>> .
>>>>> . lines deleted to save space
>>>>> .
>>>>> 69 v3st5 NA NA 1 NA NA NA
>>>>> 70 a22g5 NA 0 NA NA NA NA
>>>>> 71 b5dd3 NA 0 NA NA NA NA
>>>>> 72 g44d2 NA 0 NA NA NA NA
>>>>>
>>>>> Data after using sum and margins
>>>>>
>>>>> lab 1 2 3 4 5 6 (all)
>>>>> 1 4er66 1 0 1 0 0 0 2
>>>>> 2 4gcyi 0 0 1 0 0 0 1
>>>>> 3 5d3hh 0 0 0 0 0 0 0
>>>>> 4 5d3wt 0 0 0 0 0 0 0
>>>>> 5 6n44r 0 0 0 0 0 0 0
>>>>> .
>>>>> .lines deleted to save space
>>>>> .
>>>>> 70 a22g5 0 0 0 0 0 0 0
>>>>> 71 b5dd3 0 0 0 0 0 0 0
>>>>> 72 g44d2 0 0 0 0 0 0 0
>>>>> 73 (all) 5 2 4 3 5 7 26
>>>>>
>>>>> Uisng length just tells me how many total rows there are.
>>>>
>>>>
>>>>> What I need to do is count how many rows there is valid data,
>>>>> in this
>>>>> case either a one (1) or a zero (0) in b
>>>>
>>>> I'm guessing that you mean to apply that test to the column in b
>>>> labeled "(all)" . If that's the case, then something like
>>>> (obviously
>>>> untested):
>>>>
>>>> sum( b$'(all)' == 1 | b$'(all)' == 0)
>>>>
>>>>
>>>>
>>>>>
>>>>> I have a report to construct for tomorrow Mon so any help would be
>>>>> appreciated
>>>>>
>>>>> Regards
>>>>> Steve
>>>>
>>>> David Winsemius, MD
>>>> Heritage Laboratories
>>>> West Hartford, CT
>>>>
>>>
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>>
>
David Winsemius, MD
Heritage Laboratories
West Hartford, CT