Re: Substitution in BinLists
- To: mathgroup at smc.vnet.net
- Subject: [mg41454] Re: Substitution in BinLists
- From: Bill Rowe <listuser at earthlink.net>
- Date: Tue, 20 May 2003 03:29:00 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 5/19/03 at 5:14 AM, markb at ravel.zoology.wisc.edu (Mark E. Berres) wrote: >Hi, I'm trying to substitute a zero (0) for bins that are empty when >using BinLists: >In[192]:= <<Statistics`DataManipulation` >In[193]:= a={1,2,3,4,10}; >In[194]:= BinLists[a,{0,10,1}] >Out[194]:= {{1},{2},{3},{4},{},{},{},{},{},{10}} > >What I would like output is {1,2,3,4,0,0,0,0,0,10}. Try If[Length@#>0, First@#, 0]&/@BinLists[a, {0, 10, 1}] Note, while this does what you asked the result may not be what you really want. BinLists is intended to provide a list of lists. Each sublist is a list of the elements from the original list that fall between the specified endpoints. A key point is, the output of BinLists contains exactly the same elements the orginal list contained. By inserting 0's for empty lists you've no way to distinguish between a 0 that was an element of the original list and a 0 you inserted. It is very hard to imagine why you would wnat data elements of a list comingled with 0's representing the absence of data elements in a given interval. In addition, the code I provided will not retain all of the elements of the original list in general. Suppose instead of a step size of 1 you wanted a step size of 2. Then the output of BinLists would be {{1, 2}, {3, 4}, {}, {}, {10}} and the output of my solution to your request would be {1, 3, 0, 0, 10}. If your goal is to have flat list with the *number* of elements between endpoints you should be using BinCounts not BinLists