Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • How to shorten the code of generating a new variable conditionally?

    I have the code below to generate the variable balticf based on the value of yr. However, it seems the code here is too long, could you please help me to shorten it?
    Code:
    generate balticf=.
    replace balticf=699 if yr==1987
    replace balticf=1264    if yr==1988
    replace balticf=1543    if yr==1989
    replace balticf=1592    if yr==1990
    replace balticf=1446    if yr==1991
    replace balticf=1494    if yr==1992
    replace balticf=1373    if yr==1993
    replace balticf=1215    if yr==1994
    replace balticf=1965    if yr==1995
    replace balticf=1604    if yr==1996
    replace balticf=1516    if yr==1997
    replace balticf=1231    if yr==1998
    replace balticf=794    if yr==1999
    replace balticf=1319   if yr==2000
    replace balticf=1599    if yr==2001
    replace balticf=876    if yr==2002
    replace balticf=1738    if yr==2003
    replace balticf=4765    if yr==2004
    replace balticf=4598    if yr==2005
    replace balticf=2407    if yr==2006
    replace balticf=4397    if yr==2007
    replace balticf=9143    if yr==2008
    replace balticf=774    if yr==2009
    replace balticf=3005    if yr==2010
    replace balticf=1773    if yr==2011
    replace balticf=1738    if yr==2012
    replace balticf=699    if yr==2013
    replace balticf=2277    if yr==2014
    replace balticf=782    if yr==2015
    replace balticf=478    if yr==2016
    replace balticf=961    if yr==2017
    replace balticf=1366    if yr==2018
    replace balticf=1271    if yr==2019
    replace balticf=1090    if yr==2020
    replace balticf=1366    if yr==2021
    replace balticf=2217    if yr==2022
    I was thinking of the cond() function but it seems to be more complicated and the code should be still a lot of lines if we want to keep each line short

    https://journals.sagepub.com/doi/pdf...867X0500500310
    Last edited by Phuc Nguyen; 16 Jun 2022, 04:42.

  • #2
    One way to do this is to put your new variable information into a data file and use -merge-, as follows:

    Code:
    clear
    input yr balticf
    1987 699
    1988 1264
    1989 1543
    ...
    ... etc.
    end
    // I use a temp. file, but your data might be in some existing file,
    tempfile temp
    save `temp'
    clear
    use YourOriginalFile.dta, clear
    merge 1:1 yr using `temp'

    Comment

    Working...
    X