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/