Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: destring command |

Date |
Mon, 26 Sep 2011 15:14:21 +0100 |

Paul is emphasising that double negative signs are not necessarily to be treated as if they were negative signs. Naturally, I agree. Part way through my exchange with Abu on Saturday I noticed that he had posted "--" not "-" but guessed, perhaps wrongly, that this was a red herring, a typo or both. However, the difference is lost on -destring-'s -ignore()- option. Expanding on Paul's explanation, let's imagine that one of the values in a string variable is "--42" (two negative signs there, for those whose eyesight or monitor is not up to the job). Any argument to -destring, ignore()- is just treated as a sequence of characters. The effect of specifying -ignore(--)- is to remove "-" signs once and then to (try to) remove them again. The second request is clearly redundant but certainly not illegal. So if you specify -ignore(--)- with "--42" both "-" characters are removed and -destring- returns 42. If you specify -destring- but not the -ignore()- option -destring- refuses on "--42" unless you -force- the conversion and it then returns missing. As ignoring negative signs is almost always a very bad idea with -destring- any way, the fact remains that -destring- without -ignore()- will spot the difference betweeen two negative signs and one, which seems to be the main consideration here. If you really want to ignore double negative signs but not single negative signs, then it would be necessary to remove them before applying -destring-. Paul's advice to do something like . replace v13 = "" if v13 == "--" leaves the question of what to do with something like "--42", for which you would need something more like . replace v13 = subinstr(v13, "--", "",.) Nick On Mon, Sep 26, 2011 at 2:37 PM, Seed, Paul <paul.seed@kcl.ac.uk> wrote: > Fundamentally, Nick is right in his advice to Abu. > "-" should not be included in the ignore() option for -destring-. > -destring- ignores individual characters, not > text strings (whether separated by spaces of quotation marks). > It is very useful if this is borne in mind. > > Before invoking Nick's suggestion, > Abu should remove all unwanted occurrences of "--" > > This can be done by > replace v13 = "" if v13 == "--" > > A useful trick to use before -destring- is > tab v13 if real(v13) == "" > This will reveal all and only the values that do not come across correctly. > > Abu also gives a list of examples. > I am not sure what to happen to two of them : > > - -1.388 > - -3.301 > > Are these to be read as 1.388 or -1.388? > He needs to specify precisely. > He can use something like > replace v13 = "-1.388" if v13 == "- -1.388" > > > Date: Sat, 24 Sep 2011 10:02:31 +0100 > From: Nick Cox <njcoxstata@gmail.com> > Subject: Re: st: destring command > > Your problem is self-inflicted. As you are instructing -destring- to > ignore "-", all negative signs are stripped. > > Nick > > On Sat, Sep 24, 2011 at 9:30 AM, Abu Camara <abucamara@gmail.com> wrote: > >> I am trying the following command to destring variables in the >> IMF weo data just released. I imported it to Stata but all variables >> become string. >> When I use Stata's destring command, values that are negative becomes >> positive, i.e. lose the negative sign. >> Any help would be appreciated. A loop to do this task at once will >> also be appreciated. >> >> Command: destring v13, gen(yr1983) ignore(, n/a -- ) * * 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/

**References**:**Re: st: destring command***From:*"Seed, Paul" <paul.seed@kcl.ac.uk>

- Prev by Date:
**Re: st: tabulating with weights** - Next by Date:
**Re: st: tabulating with weights** - Previous by thread:
**Re: st: destring command** - Next by thread:
**st: multistage sample survey and coding** - Index(es):