Announcement

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

  • PSA: Replacing string values does not entirely remove the old values from the saved .dta file

    I want to alert people who de-identify, anonymize, or share data to a behavior of Stata's .dta writer. I reported it to StataCorp Technical Support on 7 September. Details of their reply are at the end.

    In short: replace name = "" does not remove names from a saved dataset. Neither does replacing names with shorter pseudonyms. The old values stay in the file, minus their first byte. Stata does not show them, but anyone can read them with a text editor or grep.

    1. String data

    When a str# value is replaced by a shorter one, Stata writes the new value and a null terminator, and leaves the rest of the fixed-width field as it was. The rest of the old value is then saved to disk. Here is a reproduction on StataNow 19.5:

    Code:
    version 19
    clear
    input str30 id
    "Maria Fernanda Oliveira"
    "João Carlos Pereira"
    "Ana Beatriz Santos"
    end
    replace id = string(_n)
    save pseudonymised.dta, replace
    Stata shows id as 1, 2 and 3. On disk, the three 30-byte fields are

    Code:
    1\0ria Fernanda Oliveira\0\0\0\0\0\0\0
    2\0ão Carlos Pereira\0\0\0\0\0\0\0\0\0\0
    3\0a Beatriz Santos\0\0\0\0\0\0\0\0\0\0\0\0
    Blanking the names with replace id = "" gives the same result. So does -saveold- to formats 117 and 115. -help dta- documents this at the level of the file format: a short string is followed by "random bytes". But those bytes are not random. They are the value you just overwrote.

    Dropping the variable removes its contents from that save. However, freed string memory gets reused. Any string variable you create later in the same session, including one in a new dataset after -clear-, can pick up the dropped values and write them into the next file you save.

    I scanned a few hundred published datasets from public research archives. About a quarter of those with a str# variable wider than some of its values have readable text in the padding that appears in no visible value in the file. The text includes addresses, place names and free-text responses. In one file, the padding held the full names of several individuals who appear nowhere in the dataset's visible values. The files most at risk are those with wide string variables that hold short values.

    2. Metadata

    The fixed-width metadata slots (variable names, formats, value label names, variable labels, sort list) are also written without being cleared first. The padding contains whatever memory Stata last used for them. That can include names and labels from a different dataset saved earlier in the same session. Using -clear-, -clear all- or -label drop _all- in between does not help. The padding also survives a load and re-save in a fresh session. About half of the published files I scanned have fragments like this. You can see it in the auto dataset Stata ships with: the slot for -turn- contains "turn\0ng_circle".

    Code:
    mata: fh = fopen(findfile("auto.dta"), "r"); s = fread(fh, 100000); fclose(fh); strpos(s, "ng_circle")
    StataCorp's response

    Technical Support told me that StataCorp does not consider this a bug, but they said it is prompting internal discussion. One option they are considering is zeroing the unused space in strings on -save-, either automatically or through an option, because doing it on every save could slow Stata down.

    In my view, the current behavior is a disclosure risk for personally identifiable information (PII).

  • #2
    Thank you for bringing this to my attention!

    I agree that this behavior definitely poses a disclosure risk, particularly because the current documentation seems misleading.

    I was able to replicate the issue with fixed-width strings (not sure about strLs). I could not, however, find similar issues with variable names, variable labels, or other metadata.

    The obvious workaround for fixed-width string variables appears to be issuing a compress command before saving the file to disk. However, having to remember to address the problem in one way or another in every session or do-file isn't exactly convenient. I'd strongly prefer zeroing out the unused bytes on save to be the default behavior, rather than an option. If performance really is an issue, then perhaps an additional c() setting that users can turn on and off, including permanently, might be the best approach.

    Comment


    • #3
      Thanks, Daniel. Two reproducers below, both tested on StataNow 19.5.

      Metadata. The easiest way to see it is to rename a variable or value label. The name slots are fixed width, and the new name is written over the old one without clearing the rest of the slot. The second part shows that the leftover bytes carry into an unrelated dataset, even after -clear all-.

      Code:
      version 19
      
      * 1. Rename a variable and its value label, then save
      clear
      set obs 1
      gen byte nda_partner_acmebank = 1
      label define terms_loan_acmebank 1 "yes"
      label values nda_partner_acmebank terms_loan_acmebank
      rename nda_partner_acmebank q17
      label copy terms_loan_acmebank yesno
      label values q17 yesno
      label drop terms_loan_acmebank
      describe
      save meta1.dta, replace
      
      * 2. Build an unrelated dataset after clear all, then save
      clear all
      set obs 1
      gen byte x = 1
      save meta2.dta, replace
      
      * Non-zero positions mean the old names are in the file
      mata:
      fh = fopen("meta1.dta", "r"); s = fread(fh, 1e6); fclose(fh)
      strpos(s, "partner_acmebank"), strpos(s, "loan_acmebank")
      fh = fopen("meta2.dta", "r"); s = fread(fh, 1e6); fclose(fh)
      strpos(s, "partner_acmebank"), strpos(s, "loan_acmebank")
      end
      Both files contain both old names. In meta1.dta, the variable name slot reads q17\0partner_acmebank. meta2.dta has a single variable, x, and no value labels, but it contains the same fragments.

      compress. -compress- only helps when it changes the storage type. If the longest value still fills the width, the type stays the same and the old values stay in the file:

      Code:
      version 19
      clear
      set obs 4
      gen party = ""
      replace party = "Movimento Democrático pela Reconstrução Nacional" in 1
      replace party = "União Progressista das Cooperativas Agrícolas" in 2
      replace party = "Frente Popular Independente" in 3
      replace party = "Respondent declined to say which party they voted for" in 4
      
      replace party = "A" in 1
      replace party = "B" in 2
      replace party = "C" in 3
      compress party
      save parties.dta, replace
      
      * Non-zero positions mean the old values are in the file
      mata:
      fh = fopen("parties.dta", "r"); s = fread(fh, 1e6); fclose(fh)
      strpos(s, "Reconstrução Nacional"), strpos(s, "Cooperativas Agrícolas"), strpos(s, "Popular Independente")
      end
      -compress- reports 0 bytes saved, party stays str53, and all three original party names are in the file.

      strLs. strLs should be fine, except in the rare case when the strL values happen to be the exactly the working memory that is "randomly" in the file. That memory can be anything that belongs to Stata. For example __icd10pcs.dta, shipped in ado/base, happens to contain a few lines of source code from merge.ado.
      Last edited by Nils Enevoldsen; 23 Sep 2026, 07:37.

      Comment


      • #4
        Originally posted by Nils Enevoldsen View Post
        compress. -compress- only helps when it changes the storage type. If the longest value still fills the width, the type stays the same and the old values stay in the file:
        Very important catch, thanks again! I totally missed that, because we'd typically replace all observations with fixed-length strings such as "" or "anonymized". I hadn't considered the case where compress does not actually change the storage type.

        Comment


        • #5
          Originally posted by Nils Enevoldsen View Post

          I scanned a few hundred published datasets from public research archives. About a quarter of those with a str# variable wider than some of its values have readable text in the padding that appears in no visible value in the file. The text includes addresses, place names and free-text responses. In one file, the padding held the full names of several individuals who appear nowhere in the dataset's visible values. The files most at risk are those with wide string variables that hold short values.

          Do you have any scripts, do-files or ado-files you could share so that researchers can audit their own data?

          Comment


          • #6
            I've attached a do-file, dtaaudit.do, that is entirely coded with an LLM. I have only skimmed the source code, and I do not vouch for its safety or correctness. Run and interpret at your own risk.

            Here's what it reports for the Angrist, Oreopoulos, and Williams Opportunity Knocks dataset available at https://economics.mit.edu/sites/defa...on%20files.zip


            . dtaaudit using "OKgradesUpdate_Feb5_2010 anonymized.dta", show(12)
            Warning: dtaaudit.do is LLM-authored (Claude Opus 5.5) and has had almost
            no human review. It may have serious omissions. Do not rely on a clean
            report as proof that a file holds no hidden data.

            Variable names
            creditsfall2008: creditsfall2008␀all2008␀␀…␀…␀…
            credits2009: credits2009␀g2008␀ing2…␀…␀…
            earnings2008: earnings2008␀d2009␀g20…8␀…␀…␀…
            earnings2009: earnings2009␀g2008␀g20…8␀…␀…␀…
            ptsover702009: ptsover702009␀g2008␀…8␀␀…␀…␀…
            earned2009: earned2009␀g2008␀08␀…8␀␀…␀…␀…
            gradeover612009: gradeover612009␀pring2…␀…␀…
            gradeover622009: gradeover622009␀pring2…␀…␀…
            gradeover632009: gradeover632009␀pring2…␀…␀…
            gradeover1002008: gradeover1002008␀g2008␀…ss…
            meanbigcgfall2008: meanbigcgfall2008␀l2008␀…ss…
            meanbigcg2008: meanbigcg2008␀e2008␀008␀…ss…
            ... and 96 more

            Display formats
            credits2008: %9.0g␀…%12.0g…%9.0g…%10.0g…········…·…
            creditsfall2008: %9.0g␀…%9.0g…%10.0g…········…·…10
            creditsspring2008: %9.0g␀…%12.0g…%9.0g…%10.0g…········…·…
            earnings2008: %9.0g␀…%12.0g…%9.0g…%10.0g…········…·…
            earningsspring2008: %9.0g␀…%12.0g…%9.0g…%10.0g…········…·…
            gpacreditsspring2008: %9.0g␀…········…·…10.1.1551.1015…d
            gpacredits2009: %9.0g␀…%12.0g…%9.0g…%10.0g…········…·…
            ptsover702008: %9.0g␀…%9.0g…·…%9.0g…·…%9s…g…·…%8.0g
            ptsover70fall2008: %9.0g␀…%8.0g…·…%8.0g…·…%8.0g…·…%9.0g…
            ptsover70spring2008: %9.0g␀%9s…g…·…%9.0g…·…%9.0g…·…%9.0g…
            ptsover702009: %9.0g␀….0g…·…%8.0g…·…%8.0g…·…

            Variable labels
            shared by up to 326 fields, bytes 23-80: g░08␀░08␀·>␀␀·?·3␀anda␀84␀·␀··␀␀·?␀␀·?␀␀·?␀␀·?s8p; ␀␀␀␀␀␀·@
            credits2009: (sum) credits2009␀g2008␀?␀…␀␀··…
            earnings2008: (sum) earnings2008␀d2009␀g20…
            earnings2009: (sum) earnings2009␀g2008␀g20…
            ptsover702009: (sum) ptsover702009␀g2008␀…0…
            earned2008: (sum) earned2008␀09␀g2008␀…0…
            earned2009: (sum) earned2009␀g2008␀08␀…0…
            gradeover1002008: (sum) gradeover1002008␀g2008␀…
            gradeover1002009: (sum) gradeover1002009␀g2008␀…
            mathsci2008: (sum) mathsci2008␀2009␀g2008␀…
            meanbigcgspring2008: (mean) meanbigcgspring2008␀g2008␀…
            meancoursegrade2008: (mean) meancoursegrade2008␀g2008␀…
            meanbigcg2008: (mean) meanbigcg2008␀e20…g2008␀…
            ... and 131 more

            Characteristics and notes
            _dta[__xi__Vars__Prefix__] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[__xi__Vars__To__Drop__] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[ReS_Xij] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[ReS_str] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[ReS_j] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[ReS_ver] variable name: _dta␀tvar'==.␀ntreatcontact __xi_
            _dta[ReS_i] variable name: _dta␀tvar'==.␀ntreatcontact __xi_

            Variable s_expecteddegree (str72)
            1. University bachelor's degree (BA, BSc, BBA, BComm, BEd, other)␀.)␀ etc.)
            2. Master's degree␀onsent␀.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322
            3. University bachelor's degree (BA, BSc, BBA, BComm, BEd, other)␀.)␀ etc.)
            4. Master's degree␀onsent␀.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2
            5. University bachelor's degree (BA, BSc, BBA, BComm, BEd, other)␀ 1.1.4322
            7. Doctoral degree (PhD, EdD, or other earned doctorate)␀␀ma␀it/525.18 (KHT
            8. Master's degree␀onsent␀gree (MA, MSc, other)␀Comm, BEd, other)␀.)␀ etc.)
            9. Doctoral degree (PhD, EdD, or other earned doctorate)␀, other)␀22)␀etc.)
            10. University bachelor's degree (BA, BSc, BBA, BComm, BEd, other)␀50727; Me
            11. Doctoral degree (PhD, EdD, or other earned doctorate)␀ CLR 2.0.50727; Me
            13. ␀es, I give my consent␀.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Me
            16. Master's degree␀onsent␀ool␀tives␀er earned doctorate)␀w, divinity, etc.)
            ... and 922 more

            Variable s_expectedgraduationdate (str25)
            1. June 2012 (4 years)␀s deg
            3. ␀niversity bachelor's deg
            5. June 2012 (4 years)␀s deg
            6. June 2012 (4 years)␀nal d
            7. June 2012 (4 years)␀, EdD
            9. June 2012 (4 years)␀, EdD
            10. June 2012 (4 years)␀s deg
            11. June 2012 (4 years)␀, EdD
            12. June 2012 (4 years)␀nal d
            13. ␀es, I give my consent␀.0
            14. June 2012 (4 years)␀nal d
            15. June 2012 (4 years)␀nal d
            ... and 803 more

            Variable s_livinglocation (str32)
            5. In a rented home/apartment␀e (BA
            13. ␀es, I give my consent␀.0; Windo
            16. In a rented home/apartment␀tives
            31. In a rented home/apartment␀e (BA
            32. In a rented home/apartment␀ree (
            36. In a rented room␀s)␀nal degree (
            43. In a rented room␀5 years)␀ or ot
            48. In a rented home/apartment␀ree (
            65. In a rented room␀s)␀s degree (BA
            75. In on-campus housing␀ EdD, or ot
            77. In on-campus housing␀t␀.0; Windo
            83. In a rented home/apartment␀e (BA
            ... and 143 more

            Variable s_mothereduc (str71)
            1. Graduated from high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.
            2. Completed a community college diploma program␀oPath.2; .NET CLR 1.1.432
            3. Graduated from high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.
            4. Completed a community college diploma program␀T CLR 1.1.4322; .NET CLR
            5. Completed a community college diploma program␀omm, BEd, other)␀ 1.1.432
            6. Did not finish high school␀tives␀harmacy, medicine, law, divinity, etc.
            7. Not applicable/Don't know␀atives␀er earned doctorate)␀␀ma␀it/525.18 (KH
            8. Attended a community college but did not complete diploma␀her)␀.)␀ etc.
            9. Did not finish high school␀tives␀er earned doctorate)␀, other)␀22)␀etc.
            10. Did not finish high school␀tives␀ BSc, BBA, BComm, BEd, other)␀50727; M
            11. Did not finish high school␀tives␀er earned doctorate)␀ CLR 2.0.50727; M
            12. Completed a university undergraduate degree␀dicine, law, divinity, etc.
            ... and 1216 more

            Variable s_fathereduc (str71)
            1. Graduated from high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.
            2. Attended a community college but did not complete diploma␀T CLR 1.1.432
            3. Completed a master's degree (MA, MSc, other)␀Comm, BEd, other)␀.)␀ etc.
            4. Completed a community college diploma program␀T CLR 1.1.4322; .NET CLR
            5. Completed a community college diploma program␀omm, BEd, other)␀ 1.1.432
            6. Did not finish high school␀tives␀harmacy, medicine, law, divinity, etc.
            7. Not applicable/Don't know␀atives␀er earned doctorate)␀␀ma␀it/525.18 (KH
            8. Did not finish high school␀e but did not complete diploma␀her)␀.)␀ etc.
            9. Did not finish high school␀tives␀er earned doctorate)␀, other)␀22)␀etc.
            10. Not applicable/Don't know␀␀tives␀ BSc, BBA, BComm, BEd, other)␀50727; M
            11. Graduated from high school␀tives␀er earned doctorate)␀ CLR 2.0.50727; M
            12. Completed a master's degree (MA, MSc, other)␀icine, law, divinity, etc.
            ... and 1211 more

            Variable s_mothercountofbirth (str31)
            2. canada␀ines␀om␀a␀e grenadines␀·
            4. sri lanka␀ china␀go␀f china␀s␀·
            5. canada␀ed a community college d
            6. china␀␀n␀ea␀land␀ublic of china
            7. guyana␀frica␀ina␀ublic of china
            9. somalia␀dor␀kong␀go␀f china␀s␀·
            10. vietnam␀␀d␀ada␀a␀rica␀ of china
            11. somalia␀dor␀kong␀go␀f china␀s␀·
            12. somalia␀g␀s␀r, china␀c of china
            13. ␀es, I give my consent␀.0; Wind
            14. india␀ted a university undergra
            15. afghanistan␀niversity undergrad
            ... and 1187 more

            Variable s_fathercountofbirth (str31)
            1. vietnam␀g␀n␀␀a␀a␀rica␀ of china
            2. pakistan␀es␀om␀a␀e grenadines␀a
            3. india␀m␀g␀n␀␀a␀a␀rica␀ of china
            4. the netherlands␀␀␀o␀f china␀s␀a
            5. canada␀ed a community college d
            6. china␀␀n␀ea␀land␀ublic of china
            7. guyana␀frica␀ina␀ublic of china
            8. hong kong␀n␀␀a␀a␀rica␀ of china
            9. somalia␀dor␀kong␀␀o␀f china␀s␀a
            10. vietnam␀␀d␀china␀go␀ic of china
            11. somalia␀dor␀kong␀␀o␀f china␀s␀a
            12. somalia␀g ␀␀hina␀go␀ic of china
            ... and 1254 more

            Variable s_earningswork (str96)
            1. 700␀0␀m␀d from high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0; .NET
            2. not applicable␀unity college but did not complete diploma␀T CLR 1.1.4322)␀ecause my daughter was
            3. ␀o␀ia␀ted a master's degree (MA, MSc, other)␀Comm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0; .NET
            4. Not Applicable␀␀unity college diploma program␀T CLR 1.1.4322; .NET CLR 2.0.50727)␀0; (R1 1.5))␀
            5. ␀o␀ada␀ed a community college diploma program␀omm, BEd, other)␀ 1.1.4322)␀ecause my daughter was
            6. 45␀␀a␀t finish high school␀tives␀harmacy, medicine, law, divinity, etc.)␀ia Center PC 5.0; .NET
            7. 1500␀a␀licable/Don't know␀atives␀er earned doctorate)␀␀ma␀it/525.18 (KHTML, like Gecko) Version/
            8. $1300␀ours␀ish high school␀e but did not complete diploma␀her)␀.)␀ etc.)␀ia Center PC 5.0; .NET
            9. not applicable␀high school␀tives␀er earned doctorate)␀, other)␀22)␀etc.)␀ia Center PC 5.0; .NET
            10. 2500␀am␀icable/Don't know␀␀tives␀ BSc, BBA, BComm, BEd, other)␀50727; Media Center PC 5.0; .NET
            11. ␀o␀alia␀d from high school␀tives␀er earned doctorate)␀ CLR 2.0.50727; Media Center PC 5.0; .NET
            12. $150␀urs␀ a master's degree (MA, MSc, other)␀icine, law, divinity, etc.)␀ke Gecko) Version/3.0.4
            ... and 1258 more

            Variable s_fundsconcern (str23)
            1. Very concerned␀high sch
            2. Very concerned␀unity co
            3. Very concerned␀ter's de
            5. Very concerned␀munity c
            6. Very concerned␀high sch
            7. Very concerned␀Don't kn
            9. Very concerned␀high sch
            13. ␀es, I give my consent␀
            14. Very concerned␀versity
            15. Very concerned␀ersity u
            16. Very concerned␀high sch
            17. Very concerned␀high sch
            ... and 701 more

            Variable s_earningstest1 (str139)
            1. 340␀ concerned␀high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)␀nfoPath.1)␀0.507
            2. $320␀concerned␀unity college but did not complete diploma␀T CLR 1.1.4322)␀ecause my daughter was just born 2.5 months ago. ␀ 3.0.04506.648;
            3. 440␀ concerned␀ter's degree (MA, MSc, other)␀Comm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)␀nfoPath.1)␀0.507
            4. 340␀what concerned␀ty college diploma program␀T CLR 1.1.4322; .NET CLR 2.0.50727)␀0; (R1 1.5))␀ CLR 3.0.04506; InfoPath.1)␀.4322; Zune 2.5)
            5. 340␀ concerned␀munity college diploma program␀omm, BEd, other)␀ 1.1.4322)␀ecause my daughter was just born 2.5 months ago. ␀ 3.0.04506.648;
            6. $340␀concerned␀high school␀tives␀harmacy, medicine, law, divinity, etc.)␀ia Center PC 5.0; .NET CLR 3.0.04506)␀5.20.1␀0.04506)␀2; InfoPath.
            7. 340␀ concerned␀Don't know␀atives␀er earned doctorate)␀␀ma␀it/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1␀PC 2.0)␀0; InfoPath.1
            8. $340␀slightly concerned␀ol␀e but did not complete diploma␀her)␀.)␀ etc.)␀ia Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)␀nfoPath.1)␀0.507
            9. 340␀ concerned␀high school␀tives␀er earned doctorate)␀, other)␀22)␀etc.)␀ia Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.432
            10. 340␀what concerned␀t know␀␀tives␀ BSc, BBA, BComm, BEd, other)␀50727; Media Center PC 5.0; .NET CLR 3.0.04506)␀5.20.1␀R 3.5.21022)␀4506.648
            11. 340␀what concerned␀ school␀tives␀er earned doctorate)␀ CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)␀.NET CLR 1.1.432
            12. $460␀t all concerned␀degree (MA, MSc, other)␀icine, law, divinity, etc.)␀ke Gecko) Version/3.0.4 Safari/523.15␀5.20.1␀h.1)␀InfoPath.1)␀2)␀8
            ... and 1241 more

            Variable s_earningstest2 (str91)
            1. 1900␀concerned␀high school␀tives␀ BSc, BBA, BComm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0;
            2. $1700␀oncerned␀unity college but did not complete diploma␀T CLR 1.1.4322)␀ecause my daughte
            3. 2500␀concerned␀ter's degree (MA, MSc, other)␀Comm, BEd, other)␀.)␀ etc.)␀ia Center PC 5.0;
            4. 1700␀hat concerned␀ty college diploma program␀T CLR 1.1.4322; .NET CLR 2.0.50727)␀0; (R1 1.
            5. 1500␀concerned␀munity college diploma program␀omm, BEd, other)␀ 1.1.4322)␀ecause my daughte
            6. $1700␀oncerned␀high school␀tives␀harmacy, medicine, law, divinity, etc.)␀ia Center PC 5.0;
            7. 1700␀concerned␀Don't know␀atives␀er earned doctorate)␀␀ma␀it/525.18 (KHTML, like Gecko) Ver
            8. $1700␀lightly concerned␀ol␀e but did not complete diploma␀her)␀.)␀ etc.)␀ia Center PC 5.0;
            9. 1700␀concerned␀high school␀tives␀er earned doctorate)␀, other)␀22)␀etc.)␀ia Center PC 5.0;
            10. 1700␀hat concerned␀t know␀␀tives␀ BSc, BBA, BComm, BEd, other)␀50727; Media Center PC 5.0;
            11. 1700␀hat concerned␀ school␀tives␀er earned doctorate)␀ CLR 2.0.50727; Media Center PC 5.0;
            12. $1700␀ all concerned␀degree (MA, MSc, other)␀icine, law, divinity, etc.)␀ke Gecko) Version/
            ... and 1256 more

            Variable advisoryear (str9)
            1. 4␀armaine
            26. 4␀armaine
            33. 4␀armaine
            55. 4␀armaine
            81. 4␀armaine
            82. 4␀armaine
            87. 4␀armaine
            90. 4␀armaine
            93. 4␀armaine
            124. 4␀armaine
            139. 4␀armaine
            140. 4␀armaine
            ... and 88 more

            ------------------------------------------------------------------------------
            auth/dta/angrist/f13077_opportunity%20knocks%20replication%20files/OKgradesUpdate_Feb5_2010 anonymized.dta: format 114, 326 variables, 1271 observations

            Section or variable with residue with text
            -------------------------------------------------------------------------
            Dataset label and timestamp 1 0
            Variable names 321 108
            Sort list 1 0
            Display formats 21 11
            Value-label names 1 0
            Variable labels 326 143
            Characteristics and notes 14 7
            Variable s_fall_regstatus (str5) 1,202 0
            Variable s_ft_pt (str2) 0 0
            Variable s_program_code (str10) 0 0
            Variable s_program_name (str55) 0 0
            Variable s_program_type (str4) 0 0
            Variable s_group (str4) 0 0
            Variable s_group_quart (str6) 0 0
            Variable file3_acstandfall2008 (str4) 13 0
            Variable file3_acstandspring2008 (str4) 66 0
            Variable file3_acstand2009 (str4) 266 0
            Variable file3_winter_ac_standing2009 (str4) 1,271 0
            Variable s_expecteddegree (str72) 938 934
            Variable s_expectedgraduationdate (str25) 1,138 815
            Variable s_livinglocation (str32) 158 155
            Variable s_mothereduc (str71) 1,230 1,228
            Variable s_fathereduc (str71) 1,232 1,223
            Variable s_mothercountofbirth (str31) 1,271 1,199
            Variable s_fathercountofbirth (str31) 1,271 1,266
            Variable s_earningswork (str96) 1,270 1,270
            Variable s_fundsconcern (str23) 1,160 713
            Variable s_earningstest1 (str139) 1,271 1,253
            Variable s_earningstest2 (str91) 1,270 1,268
            Variable advisoryear (str9) 1,171 100
            Value labels 0 0
            -------------------------------------------------------------------------
            Residue: bytes after the field's terminator that are not all zero.
            Text: a run of at least 5 readable characters among them.
            Listed fields: read by Stata, hidden; ␀ zero byte, · other non-text byte,
            … hidden bytes shared with most fields in the section.
            Specify option all to list every finding.
            Attached Files

            Comment

            Working...
            X