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: replacing values problem


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: replacing values problem
Date   Wed, 19 Mar 2014 20:59:34 +0000

Your particular syntax problem I guess arises because -country- is a
string variable and your code treats it as numeric.

`parentlocation'

should be

"`parentlocation'"

Note that

replace country = country[_n-1] if missing(country)

is fine for your example, but the rest of your data might not be so
well behaved.

I am not a -merge-master, more a -by-pilot, but I'd see this as a -merge-.

See http://www.stata.com/statalist/archive/2014-03/msg00592.html for a
similar problem.

This code works, but the assumption is that no parents themselves have
parents in the dataset.

clear

input ID parentID str6 country
1 . "UK"
2 1 ""
3 1 ""
4 . "USA"
5 4 ""
6 4 ""
7 . "France"
8 7 ""
end

clonevar country2 = country

save mytest

keep if missing(parentID)
keep ID country2
rename ID parentID

list

merge 1:m parentID using mytest
replace country = country2 if missing(country)
list


Nick
[email protected]


On 19 March 2014 20:20, Paula Smith <[email protected]> wrote:
> Hi all,
>
> I have a database of parents and children with variables indicating parent =
> ID and country of parent:
>
> ID            parentID              country
> 1              .                               UK
> 2              1
> 3              1
> 4              .                               USA
> 5              4
> 6              4
> 7              .                               France
> 8              7
>
> I'm wanting to put give the children the same value of 'country' as the par=
> ent. The 'country' variable is a string.
>
> So far I've got:
>
> quietly levelsof country if country!="", local(parentlocation)
> quietly levelsof parentID if parentID!=. , local(parent)
> quietly levelsof ID if parentID!=. , local(child)
> foreach l of local child {
>                 quietly replace country=`parentlocation' if ParentID==`parent'
>                 }
>
> But I'm getting an r(198) error. Am I over-complicating things? Can anyone =
> help?
>
*
*   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