Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: removing leading blanks


From   Abhimanyu Arora <[email protected]>
To   [email protected]
Subject   Re: st: removing leading blanks
Date   Mon, 2 Jan 2012 17:30:46 +0530

Yes, Nick you sure hit the bull's eye of the problem, thanks!
. gen problem = substr(district, 1, 4)

. charlist problem


. return list

macros:
              r(chars) : "  "
           r(sepchars) : "    "
              r(ascii) : "32 160 "


. replace var1 = subinstr(var1, char(32), "", .)
(4992 real changes made)

. replace var1 = subinstr(var1, char(160), "", .)
(4992 real changes made)

Problem solved, new year begins on a happy learning note!
Cheers
Abhimanyu

On Sun, Jan 1, 2012 at 7:06 PM, Nick Cox <[email protected]> wrote:
> As the help for -charlist- explains,
>
> " charlist may, for example, reveal the presence of problematic characters
>    in a string variable which "should be" numeric.  It leaves behind a
>    terse character list in r(chars); a space-separated character list in
>    r(sepchars); and a space-separated numlist of ASCII codes in r(ascii).
>    Any may be used in a subsequent command. Sometimes copying and pasting
>    all or part of the displayed output to the command window may be the
>    most practical way to use the output, say as argument to destring,
>    ignore().
>
>    Note in particular that many awkward characters may not print
>    comprehensibly or visibly in your Results window. To some extent, this
>    will depend on the font you choose. A particular pitfall is that
>    char(32) and char(160) appear identical and may be overlooked in any
>    case. The returned results showing ASCII codes are needed to solve many
>    of these difficulties."
>
> So, my guess is that -charlist- did not help you because you did not
> look at its returned results, which are needed to distinguish char(9),
> char(32) and char(160) -- or whatever char(#) looks like char(32) but
> is not identical.
>
> It's thus not correct that -charlist- cannot distinguish non-blank
> characters. That is much of its rationale.
>
> Nick
>
> On Sun, Jan 1, 2012 at 10:26 AM, Abhimanyu Arora
> <[email protected]> wrote:
>> Yes, I had to ultimately give up after spending hours thinking about
>> the anomalous (buggy) nature of -ltrim- (even -charlist- did not pick
>> out a non-blank character). -substr- solved the problem luckily
>>
>> Apparently there was a similar situation 5 years ago on the list
>> http://www.stata.com/statalist/archive/2006-09/msg00269.html (but I am
>> sure the spaces were leading in my case but just to be sure I tried
>> both rtrim & trim with no changes)
>>
>>
>> Best regards
>> Abhimanyu
>>
>>
>>
>> On Sun, Jan 1, 2012 at 2:54 PM, Nick Cox <[email protected]> wrote:
>>> OK, but in that case why did -ltrim()- fail to do what you wanted,
>>> which is where you started?
>>>
>>> Nick
>>>
>>> On Sun, Jan 1, 2012 at 3:47 AM, Abhimanyu Arora
>>> <[email protected]> wrote:
>>>> Thanks Nick, but doesn't it imply that the blanks are actually blanks
>>>> and not any other string characters?
>>>>
>>>> But anyway, I was able to solve the issue by using
>>>> replace var1=substr(var1,5,.)
>>>>
>>>> Wish you and all members of the statalist a very happy new year!
>>>>
>>>> Best regards
>>>> Abhimanyu
>>>>
>>>> On Sat, Dec 31, 2011 at 7:56 PM, Nick Cox <[email protected]> wrote:
>>>>> I find the elements of your report difficult to reconcile. You imply
>>>>> that -charlist- gives no output, which is not the case.
>>>>>
>>>>> Nick
>>>>>
>>>>> On Sat, Dec 31, 2011 at 1:42 PM, Abhimanyu Arora
>>>>> <[email protected]> wrote:
>>>>>> Hi Nick
>>>>>> Thanks for the tip.
>>>>>> I followed your suggestions but somehow still am unable to get things right.
>>>>>> Here are the steps I followed together with the displayed output.
>>>>>> Charlist rules out non-blank spaces, but-subinstr- with char(9) or "
>>>>>> ", both do not yield the desired outcome.
>>>>>>
>>>>>> . count
>>>>>>   10
>>>>>>
>>>>>> . gen problem=substr(var1,1,4)
>>>>>>
>>>>>> . charlist problem
>>>>>>
>>>>>>
>>>>>> . replace var1 = subinstr(var1, char(9), "", .)
>>>>>> (0 real changes made)
>>>>>>
>>>>>>
>>>>>> Now,
>>>>>>
>>>>>> . replace var1 = subinstr(var1, " ", "",. )
>>>>>> (10 real changes made)
>>>>>>
>>>>>> . gen problem2=substr(var1,1,3) *It seems the 10 changes are basically
>>>>>> left trimming by 1 leading blank space*
>>>>>>
>>>>>> . charlist problem2
>>>>>>
>>>>>>
>>>>>> . replace var1 = subinstr(var1, " ", "",. ) *Similar recursive steps
>>>>>> as above does not seem to work out*
>>>>>> (0 real changes made)
>>>>>>
>>>>>> Cheers
>>>>>> Abhimanyu
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Dec 31, 2011 at 5:34 PM, Nick Cox <[email protected]> wrote:
>>>>>>> What you describe as blanks may be some other character(s).
>>>>>>>
>>>>>>> -charlist- (SSC) is a utility which may help.
>>>>>>>
>>>>>>> gen problem = substr(var1, 1, 4)
>>>>>>>
>>>>>>> charlist problem
>>>>>>>
>>>>>>> After finding out which characters are present, use code such as
>>>>>>>
>>>>>>> replace var1 = subinstr(var1, char(9), "", .)
>>>>>>>
>>>>>>> where 9 is a placeholder for the argument you need. (char(9) is a tab,
>>>>>>> and the characters might just be a tab.)
>>>>>>>
>>>>>>> Nick
>>>>>>>
>>>>>>> On Sat, Dec 31, 2011 at 11:54 AM, Abhimanyu Arora
>>>>>>> <[email protected]> wrote:
>>>>>>>
>>>>>>>> All values of a string variable, var1, have 4 blank spaces in the beginning.
>>>>>>>> However, when I type in the command
>>>>>>>> -replace var1=ltrim(var1)- ,
>>>>>>>>  the output displays "0 real changes made" (and needless to say,
>>>>>>>> things remain as they were to start with)
>>>>>>>> Would be really great if this puzzling issue is sorted out.
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index