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: Problem with -infix- with if qualifiers and strings?


From   Sergiy Radyakin <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: Problem with -infix- with if qualifiers and strings?
Date   Tue, 12 Nov 2013 19:46:05 -0500

I agree with Robert that this might be the reason for Stata's observed
behavior. But looking at the large picture of what Jorge is doing (and
specifically reading fixed ascii files with records of multiple types)
it reminds me reading a CSPro file. If this is indeed the case, Jorge
might benefit from a specialized command to import CSPro file to Stata
that would automatically parse the CSPro dictionary and import records
of individual type, or dump all records as separate Stata files. The
description of -usecspro- is available here:
http://ideas.repec.org/p/boc/usug13/17.html
or here (same)
http://www.stata.com/meeting/uk13/abstracts/materials/uk13_radyakin.pdf

and Jorge can contact me directly for the program files.

Best, Sergiy Radyakin

On Tue, Nov 12, 2013 at 6:17 PM, Robert Picard <[email protected]> wrote:
> Here's how your code runs on my Mac using Stata 12.1. As you can see,
> I don't lose an observation. I'm pretty sure that the last line of
> your version of "test.txt" is missing a return character which causes
> Stata to skip the last line. As to -infix-'s behavior, it must read in
> values for -type- and -number- before it can try to evaluate -if
> type==20-. That generates the errors you see. One solution is to read
> the second number as as string and then convert it to float later, see
> example below.
>
> Robert
>
> --------------- test.txt ------------------------
> 10ABC
> 20321
> 10ZYX
> 20654
> -------------------------------------------------
>
> . infix type 1-2 str text 3-5 if type==10 using test.txt
> (2 observations read)
>
> . list
>
>      +-------------+
>      | type   text |
>      |-------------|
>   1. |   10    ABC |
>   2. |   10    ZYX |
>      +-------------+
>
> .
> . clear
>
> . infix type 1-2 number 3-5 if type==20 using test.txt
> 'ABC' cannot be read as a number for number[1]
> 'ZYX' cannot be read as a number for number[2]
> (2 observations read)
>
> . list
>
>      +---------------+
>      | type   number |
>      |---------------|
>   1. |   20      321 |
>   2. |   20      654 |
>      +---------------+
>
> .
> . clear
>
> . infix type 1-2 str snumber 3-5 if type==20 using test.txt
> (2 observations read)
>
> . gen number = real(snumber)
>
> . list
>
>      +-------------------------+
>      | type   snumber   number |
>      |-------------------------|
>   1. |   20       321      321 |
>   2. |   20       654      654 |
>      +-------------------------+
>
> On Tue, Nov 12, 2013 at 5:13 PM, Jorge Eduardo Pérez Pérez
> <[email protected]> wrote:
>> Dear Statalist.
>>
>> I have noticed weird behavior regarding -infix- and data where the
>> variable type may change per line. -infix- is not reading the dataset
>> properly.
>>
>> Here's an example. My dataset is:
>>
>> 10ABC
>> 20321
>> 10ZYX
>> 20654
>>
>> If I try to read the lines that start with 10 and the remainder as a
>> string, everything works:
>>
>> . clear
>>
>> . infix type 1-2 str text 3-5 if type==10 using test.txt
>> (2 observations read)
>>
>> . list
>>
>>      +-------------+
>>      | type   text |
>>      |-------------|
>>   1. |   10    ABC |
>>   2. |   10    ZYX |
>>      +-------------+
>>
>> But if I try to read the lines that start with 20, where the remainder
>> is a number, Stata seems to be trying to read the lines that start
>> with 10 as well, producing a "cannot be read" message and , worse,
>> dropping observations from my data!
>>
>> . clear
>>
>> . infix type 1-2 number 3-5 if type==20 using test.txt
>> 'ABC' cannot be read as a number for number[1]
>> 'ZYX' cannot be read as a number for number[2]
>> (1 observations read)
>>
>> . list
>>
>>      +---------------+
>>      | type   number |
>>      |---------------|
>>   1. |   20      321 |
>>      +---------------+
>>
>> I have replicated this in both Stata 12.1, Windows 7 and 13.1 on
>> Windows 8. Can someone replicate to see if this is a bug, or am I
>> missing something? In the meantime I will read my variables as strings
>> and destring afterwards.
>>
>> Thanks!
>>
>> --------------------------------------------
>> Jorge Eduardo Pérez Pérez
>> Graduate Student
>> Department of Economics
>> Brown University
>>
>> *
>> *   For searches and help try:
>> *   http://www.stata.com/help.cgi?search
>> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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