Data Cart

Your data extract

0 variables
0 samples
View Cart
RELATE
Relationship to household head

Codes and Frequencies




Loading Frequency Data...

Can't find the category you are looking for? Try the Detailed codes

Explore how IPUMS created this variable

Download


      class Relate : public Editor {

public:
  Relate(VarPointer varInfo) : Editor(varInfo) {}
  void edit() {
    bool doConsistency = true;

    long a = getRecoded();
    switch (dataSet) {
    case dataset_id::br1960a: {
      if (BR1960A_0430() == 3 || BR1960A_0430() == 4)
        a = 5000;
    } break;
    case dataset_id::br1970a: {
      if (BR1970A_0435() == 3 && BR1970A_0403() < 6)
        a = 4920;
      if (BR1970A_0435() == 4)
        a = 5000;
    } break;
    case dataset_id::mx1970a: {
      if (MX1970A_0432() > 1)
        a = 9999;
    } break;
    case dataset_id::mx2000a: {
      if (doConsistency) {
        long head = 1;
        for (long i = 1; i <= countPeople(); i++)
          if (MX2000A_0400(i) == 100)
            head = i;
        long sp = 0;
        for (long i = 1; i <= countPeople(); i++)
          if (MX2000A_0400(i) == 200)
            sp = 1;
        if (!sp)
          if (abs(head - PERNUM()) == 1 && isMarried(PERNUM()) &&
              isMarried(head) && SEX() != SEX(head) &&
              labs(AGE() - AGE(head)) < 12 && MX2000A_0400() == 624)
            a = 2000;
          else {
            long hd = 1;
            long nearest = 999;
            for (long i = 1; i <= countPeople(); i++)
              if (MX2000A_0400(i) == 100)
                hd = i;
            for (long i = 1; i <= countPeople(); i++)
              if (MX2000A_0400(i) == 200) {
                if (nearest == 999)
                  nearest = i;
                if (abs(i - hd) < nearest)
                  nearest = i;
              }
            if (MX2000A_0400() == 200 && PERNUM() != nearest)
              a = 4900;
          }
      }
    } break;
    case dataset_id::co1973a: {
      if (doConsistency) {
        long head = 1;
        for (long i = 1; i < countPeople(); i++)
          if (CO1973A_0401(i) == 1)
            head = i;
        long sp = 0;
        for (long i = 1; i <= countPeople(); i++)
          if (CO1973A_0401(i) == 2)
            sp = 1;
        if (!sp)
          if (abs(head - PERNUM()) == 1 && isMarried(PERNUM()) &&
              isMarried(head) && SEX() != SEX(head) &&
              labs(AGE() - AGE(head)) < 12 &&
              (CO1973A_0401() == 6 || CO1973A_0401() == 9))
            a = 2000;
      }
    } break;
    case dataset_id::ke1989a: {
      if (doConsistency) {
        long head = 1;
        for (long i = 1; i < countPeople(); i++)
          if (KE1989A_0401(i) == 1)
            head = i;
        long sp = 0;
        for (int64_t i = 1; i <= countPeople(); i++)
          if (KE1989A_0401(i) == 2)
            sp = 1;
        if (!sp)
          if (abs(head - PERNUM()) == 1 && isMarried(PERNUM()) &&
              isMarried(head) && SEX() != SEX(head) &&
              labs(AGE() - AGE(head)) < 12 &&
              (KE1989A_0401() == 3 || KE1989A_0401() == 4 ||
               KE1989A_0401() == 5 || KE1989A_0401() == 6 ||
               KE1989A_0401() == 7))
            a = 2000;
      }
    } break;
    case dataset_id::ke1999a: {
      if (doConsistency) {
        int64_t head = 1;
        for (int64_t i = 1; i < countPeople(); i++)
          if (KE1999A_0401(i) == 1)
            head = i;
        int64_t sp = 0;
        for (int64_t i = 1; i <= countPeople(); i++)
          if (KE1999A_0401(i) == 2)
            sp = 1;
        if (!sp)
          if (abs(head - PERNUM()) == 1 && isMarried(PERNUM()) &&
              isMarried(head) && SEX() != SEX(head) &&
              labs(AGE() - AGE(head)) < 12 &&
              (KE1999A_0401() == 3 || KE1999A_0401() == 4 ||
               KE1999A_0401() == 5 || KE1999A_0401() == 6 ||
               KE1999A_0401() == 7))
            a = 2000;
      }
    } break;
    case dataset_id::co1985a: {
      if (doConsistency) {
        int64_t head = 1;
        for (int64_t i = 1; i < countPeople(); i++)
          if (CO1985A_0401(i) == 1)
            head = i;
        int64_t sp = 0;
        for (int64_t i = 1; i <= countPeople(); i++)
          if (CO1985A_0401(i) == 2)
            sp = 1;
        if (!sp)
          if (SEX(head) != SEX() && CO1985A_0401(head) == 1 &&
              (CO1985A_0401() == 7 || CO1985A_0401() == 3) && isMarried(head) &&
              isMarried(PERNUM()) && labs(AGE(head) - AGE()) < 12)
            a = 2000;
      }
    } break;
    case dataset_id::co1993a: {
      if (doConsistency) {
        int64_t head = 1;
        for (int64_t i = 1; i < countPeople(); i++)
          if (CO1993A_0401(i) == 1)
            head = i;
        int64_t sp = 0;
        for (int64_t i = 1; i <= countPeople(); i++)
          if (CO1993A_0401(i) == 2)
            sp = 1;
        if (!sp)
          if (abs(head - PERNUM()) == 1 && isMarried(PERNUM()) &&
              isMarried(head) && SEX() != SEX(head) &&
              labs(AGE() - AGE(head)) < 12 &&
              (CO1993A_0401() == 7 || CO1993A_0401() == 3))
            a = 2000;
      }
    } break;
    case dataset_id::hu1980a: {
      if (HU1980A_0410() == 7 && HU1980A_0426() == 2)
        a = 5000;
      if ((HU1980A_0410() == 1 || HU1980A_0410() == 3) && HU1980A_0426() == 2 &&
          HU1980A_0044(0) >= 25 && HU1980A_0044(0) <= 28 &&
          HU1980A_0404() - HU1980A_0404(1) >= 15) {
        a = 4200;
        for (int64_t tmp = PERNUM(); tmp <= countPeople(); tmp++) {
          if (HU1980A_0426(tmp) == 2 && HU1980A_0410(tmp) <= 2) {
            setData(tmp, 4200);
          }
          if (HU1980A_0426(tmp) == 2 && HU1980A_0410(tmp) >= 4 &&
              HU1980A_0410(tmp) <= 6) {
            setData(tmp, 4930);
          }
        }
      } else if ((HU1980A_0410() == 1 || HU1980A_0410() == 3) &&
                 HU1980A_0426() == 2 && HU1980A_0044(0) >= 25 &&
                 HU1980A_0044(0) <= 28 &&
                 HU1980A_0404(1) - HU1980A_0404() >= 15) {
        a = 3400;
        for (int64_t tmp = PERNUM(); tmp <= countPeople(); tmp++) {
          if (HU1980A_0426(tmp) == 2 && HU1980A_0410(tmp) == 4) {
            setData(tmp, 4100);
          }
          if (HU1980A_0426(tmp) == 2 && HU1980A_0410(tmp) <= 2) {
            setData(tmp, 3400);
          }
          if (HU1980A_0426(tmp) == 2 &&
              (HU1980A_0410(tmp) == 5 || HU1980A_0410(tmp) == 6)) {
            setData(tmp, 4930);
          }
        }
      } else if (HU1980A_0410() < 7 && HU1980A_0426() == 2 &&
                 HU1980A_0044(0) >= 29 && HU1980A_0044(0) <= 32)
        a = 4930;
      else if (HU1980A_0044(0) >= 33 && HU1980A_0044(0) <= 36 &&
               HU1980A_0426() == 2)
        a = 5000;
      else if (HU1980A_0044(0) >= 37 && HU1980A_0044(0) < 99 &&
               HU1980A_0426() > 1)
        a = 9999;
    } break;
    case dataset_id::hu1990a: {
      if ((HU1990A_0411() <= 2 || HU1990A_0411() == 4 || HU1990A_0411() == 9) &&
          HU1990A_0435() >= 2 && HU1990A_0056(0) == 1 && HU1990A_0056(0) < 9 &&
          HU1990A_0405() - HU1990A_0405(1) >= 15) {
        a = 4200;
        for (int64_t tmp = PERNUM(); tmp <= countPeople(); tmp++) {
          if (HU1990A_0435(tmp) == HU1990A_0435() && HU1990A_0411(tmp) >= 1 &&
              HU1990A_0411(tmp) <= 2) {
            setData(tmp, 4200);
          }
          if (HU1990A_0435(tmp) == HU1990A_0435() &&
              (HU1990A_0411(tmp) >= 5 && HU1990A_0411(tmp) <= 7 ||
               HU1990A_0411(tmp) == 3)) {
            setData(tmp, 4930);
          }
        }
      } else if ((HU1990A_0411() <= 2 || HU1990A_0411() == 4 ||
                  HU1990A_0411() == 9) &&
                 HU1990A_0435() >= 2 && HU1990A_0056(0) == 1 &&
                 HU1990A_0056(0) < 9 &&
                 HU1990A_0405(1) - HU1990A_0405() >= 15) {
        a = 3400;
        for (int64_t tmp = PERNUM(); tmp <= countPeople(); tmp++) {
          if (HU1990A_0435(tmp) == HU1990A_0435() && HU1990A_0411(tmp) >= 1 &&
              HU1990A_0411(tmp) <= 2) {
            setData(tmp, 3400);
          }
          if (HU1990A_0435(tmp) == HU1990A_0435() && HU1990A_0411(tmp) == 5) {
            setData(tmp, 4100);
          }
          if (HU1990A_0435(tmp) == HU1990A_0435() &&
              (HU1990A_0411(tmp) == 6 || HU1990A_0411(tmp) == 7 ||
               HU1990A_0411(tmp) == 3)) {
            setData(tmp, 4930);
          }
        }
      } else if (HU1990A_0411() != 8 && HU1990A_0435() >= 2 &&
                 HU1990A_0056(0) >= 1 && HU1990A_0056(0) <= 6)
        a = 4930;
      else if (HU1990A_0435() >= 2 && HU1990A_0056(0) == 7 ||
               HU1990A_0411() == 8)
        a = 5000;
    } break;
    case dataset_id::hu2001a: {
      if (HU2001A_0401() == 0)
        a = 5600;
    } break;
    case dataset_id::hu2011a: {
      int64_t hdnum = 0;
      for (int64_t tmp = 1; tmp <= countPeople(); tmp++) {
        if (HU2011A_0413(tmp) == 1 || HU2011A_0413(tmp) == 2) {
          hdnum = tmp;
        }
      }
      if (HU2011A_0412() >= 6 && HU2011A_0412() <= 9 && hdnum != 0 &&
          (HU2011A_0412(hdnum) == 1 || HU2011A_0412(hdnum) == 2) &&
          HU2011A_0402() == HU2011A_0402(hdnum)) {
        if (HU2011A_0412() == 6 || HU2011A_0412() == 7) {
          a = 3000;
        } else {
          a = 4600;
        }
      }
    } break;
    case dataset_id::rw2002a: {
      if (RW2002A_0402() == 99 && RW2002A_0403() == 3)
        a = 5120;
    } break;
    case dataset_id::ch1970a: {
      if (CH1970A_0413() == 1 && CH1970A_0412() == 2)
        a = 2000;
    } break;
    case dataset_id::ch1980a: {
      if (CH1980A_0413() == 1 && CH1980A_0412() == 2)
        a = 2000;
    } break;
    case dataset_id::ch1990a: {
      if (CH1990A_0413() == 1 && CH1990A_0412() == 2)
        a = 2000;
    } break;
    case dataset_id::ch2000a: {
      if (CH2000A_0413() == 1 && CH2000A_0412() == 2)
        a = 2000;
    } break;
    case dataset_id::sn1988a: {
      if (SN1988A_0402() == 9 && SN1988A_0400() > 1)
        a = 6000;
    } break;
    case dataset_id::ie1971a: {
      if (SUBFNUM() == 0 || SUBFNUM() > 1)
        a = 6000;
      if (IE1971A_0034(0) == 2) {
        if (countPeople() == 1)
          a = 1000;
        else if (PERNUM() == 1 && IE1971A_0007(0) == 3 && SUBFNUM() == 0)
          a = 1000;
      }
    } break;
    case dataset_id::ie1979a: {
      if (SUBFNUM() == 0 || SUBFNUM() > 1)
        a = 6000;
      if (IE1979A_0022(0) == 1) {
        if (countPeople() == 1)
          a = 1000;
        else if (PERNUM() == 1 && IE1979A_0007(0) == 3 && SUBFNUM() == 0)
          a = 1000;
      }
    } break;
    case dataset_id::ie1981a: {
      if (IE1981A_0035(0) == 0) {
        if (countPeople() == 1)
          a = 1000;
        else if (PERNUM() == 1 && IE1981A_0007(0) == 3 && SUBFNUM() == 0)
          a = 1000;
      }
    } break;
    case dataset_id::ie1986a: {
      if (IE1986A_0025(0) == 0) {
        if (countPeople() == 1)
          a = 1000;
        else if (PERNUM() == 1 && IE1986A_0007(0) == 3 && SUBFNUM() == 0)
          a = 1000;
      }
    } break;
    case dataset_id::ie1991a: {
      if (IE1991A_0036(0) == 1) {
        if (IE1991A_0401() == 98)
          a = 9999;
        if (countPeople() == 1)
          a = 1000;
        else {
          if (IE1991A_0402() == 1 && IE1991A_0007(0) == 3)
            a = 1000;
          else if (PERNUM() == 1 && SUBFNUM() == 0)
            a = 1000;
        }
      }
    } break;
    case dataset_id::tr1985a: {
      if (TR1985A_0403() == 3 && (TR1985A_0411() == 1 || TR1985A_0411() == 9))
        a = 4100;
      if (TR1985A_0403() == 3 && TR1985A_0411() > 1 && TR1985A_0411() < 8)
        a = 4300;
      if (TR1985A_0403() == 3 && TR1985A_0411() == 8 && TR1985A_0402() < 18)
        a = 4100;
      if (TR1985A_0403() == 3 && TR1985A_0411() == 8 && TR1985A_0402() >= 18 &&
          TR1985A_0402() < 98)
        a = 4300;
      if (TR1985A_0403() == 3 && TR1985A_0411() == 8 && TR1985A_0402() == 98)
        a = 9999;
    } break;
    case dataset_id::tr1990a: {
      if (TR1990A_0403() == 3 && (TR1990A_0408() == 1 || TR1990A_0408() == 9))
        a = 4100;
      if (TR1990A_0403() == 3 && TR1990A_0408() > 1 && TR1990A_0408() < 8)
        a = 4300;
      if (TR1990A_0403() == 3 && TR1990A_0408() == 8 && TR1990A_0402() < 18)
        a = 4100;
      if (TR1990A_0403() == 3 && TR1990A_0408() == 8 && TR1990A_0402() >= 18 &&
          TR1990A_0402() < 91)
        a = 4300;
      if (TR1990A_0403() == 3 && TR1990A_0408() == 8 && TR1990A_0402() == 99)
        a = 9999;
    } break;
    case dataset_id::mx2010a: {
      if (MX2010A_0404() == 8 &&
          (MX2010A_0405() == 603 || MX2010A_0405() == 604))
        a = 4410;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 606)
        a = 4500;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 607)
        a = 4510;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 610)
        a = 4120;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 612)
        a = 4700;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 613)
        a = 4810;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 614)
        a = 4820;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 618)
        a = 4430;
      if (MX2010A_0404() == 9 &&
          (MX2010A_0405() == 401 || MX2010A_0405() == 405 ||
           MX2010A_0405() == 413))
        a = 5210;
      if (MX2010A_0404() == 9 && MX2010A_0405() == 421)
        a = 5220;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 619)
        a = 4830;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 620)
        a = 5140;
      if (MX2010A_0404() == 8 && MX2010A_0405() == 621)
        a = 5150;
    } break;
    case dataset_id::zm2000a: {
      if (SUBFNUM() > 1)
        a = 9999;
    } break;
    case dataset_id::mx2015a: {
      if (MX2015A_0403() == 8 &&
          (MX2015A_0404() == 403 || MX2015A_0404() == 404))
        a = 4410;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 406)
        a = 4500;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 407)
        a = 4510;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 410)
        a = 4120;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 412)
        a = 4700;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 413)
        a = 4810;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 414)
        a = 4820;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 418)
        a = 4430;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 419)
        a = 4830;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 420)
        a = 5140;
      if (MX2015A_0403() == 8 && MX2015A_0404() == 421)
        a = 5150;
      if (MX2015A_0403() == 9 && MX2015A_0404() == 601)
        a = 5210;
      if (MX2015A_0403() == 9 && MX2015A_0404() == 615)
        a = 5220;
    } break;
    case dataset_id::gr2011a: {
      int64_t count = 0;
      int64_t headsex = 0;
      int64_t temp_a = 0;
      if (countPeople() == 1)
        a = 1000;
      else {
        for (int64_t tmp = 1; tmp <= countPeople(); tmp++) {
          temp_a = 6000;
          if (GR2011A_0433(tmp) == 1) {
            count++;
            if (count == 1) {
              temp_a = 1000;
              headsex = GR2011A_0435(tmp);
            } else {
              if (GR2011A_0434(tmp) == 81 || GR2011A_0434(tmp) == 82) {
                temp_a = 4900;
              } else if (GR2011A_0434(tmp) == 91 || GR2011A_0434(tmp) == 92) {
                temp_a = 6000;
              }
              if (headsex == 1) {
                if (GR2011A_0435(tmp) == 2) {
                  if (GR2011A_0434(tmp) == 1 || GR2011A_0434(tmp) == 2) {
                    temp_a = 2100;
                  }
                  if (GR2011A_0434(tmp) == 5 || GR2011A_0434(tmp) == 6) {
                    temp_a = 2200;
                  }
                } else if (GR2011A_0435(tmp) == 3 || GR2011A_0435(tmp) == 4 ||
                           GR2011A_0435(tmp) == 5) {
                  temp_a = 3000;
                }
              }
              if (headsex == 2) {
                if (GR2011A_0435(tmp) == 1) {
                  if (GR2011A_0434(tmp) == 1 || GR2011A_0434(tmp) == 2) {
                    temp_a = 2100;
                  }
                  if (GR2011A_0434(tmp) == 5 || GR2011A_0434(tmp) == 6) {
                    temp_a = 2200;
                  }
                } else if (GR2011A_0435(tmp) == 3 || GR2011A_0435(tmp) == 4 ||
                           GR2011A_0435(tmp) == 5) {
                  temp_a = 3000;
                }
              }
            }
          }
          if (PERNUM() == tmp) {
            a = temp_a;
          }
        }
      }
    } break;
    case dataset_id::pl1978a: {
      if (PL1978A_0424() >= 2 && PL1978A_0424() <= 5)
        a = 6000;
      if (PL1978A_0030(0) == 0)
        a = 5600;
    } break;
    case dataset_id::np2011a: {
      if (NP2011A_0401() == 3 && NP2011A_0402() == 2)
        a = 4300;
      if (NP2011A_0401() == 4 && NP2011A_0402() == 1)
        a = 4300;
    } break;
    case dataset_id::tg1970a: {
      if (TG1970A_0417() == 0 && TG1970A_0415() == 2) {
        a = 6000;
      }
      if (TG1970A_0417() >= 2) {
        if (TG1970A_0415() == 2 && TG1970A_0021() == 1) {
          a = 6000;
        } else if (TG1970A_0021() > 1) {
          if ((TG1970A_0436() == 2 | TG1970A_0436() == 6) &&
              TG1970A_0415() != 9) {
            a = 6000;
          } else if (TG1970A_0436() == 3) {
            if (TG1970A_0415() == 2) {
              a = 4300;
            } else if (TG1970A_0415() == 3) {
              a = 4100;
            } else if (TG1970A_0415() == 4) {
              a = 3000;
            } else if (TG1970A_0415() == 5) {
              a = 6000;
            }
          } else if (TG1970A_0436() == 4) {
            if (TG1970A_0415() == 2) {
              a = 4430;
            } else if (TG1970A_0415() == 3) {
              a = 4810;
            } else if (TG1970A_0415() == 4) {
              a = 6000;
            } else if (TG1970A_0415() == 5) {
              a = 6000;
            }
          } else if (TG1970A_0436() == 5) {
            if (TG1970A_0415() == 2) {
              a = 4210;
            } else if (TG1970A_0415() == 3) {
              a = 4410;
            } else if (TG1970A_0415() == 4) {
              a = 4700;
            } else if (TG1970A_0415() == 5) {
              a = 4210;
            }
          } else if (TG1970A_0436() == 9) {
            a = 9999;
          }
        }
      }
    } break;
    case dataset_id::ie1901a: {
      if (PERNUM() == 1) {
        // Recode "Spouse" to "Head" if listed first
        if (IE1901A_0406() == 2) {
          a = 1000;
        }
        // Recode first "Parent" to "Head" if persons 1 and 2 are
        // "Parent" AND their relate strings don't both start with
        // "Father"
        if (countPeople() > 1) {
          if (IE1901A_0406() == 5 && IE1901A_0406(2) == 5 &&
              !(IE1901A_0407.getEditedString().substr(0, 6) == "Father" &&
                IE1901A_0407.getEditedString(2).substr(0, 6) == "Father")) {
            a = 1000;
          }
        }
      }
      if (PERNUM() == 2) {
        // Recode second "Parent" to "Spouse" if persons 1 and 2 are
        // "Parent" AND their relate strings don't both start with
        // "Father"
        if (IE1901A_0406() == 5 && IE1901A_0406(1) == 5 &&
            !(IE1901A_0407.getEditedString().substr(0, 6) == "Father" &&
              IE1901A_0407.getEditedString(1).substr(0, 6) == "Father")) {
          a = 2100;
        }
      }
    } break;
    case dataset_id::ie1911a: {
      if (PERNUM() == 1) {
        // Recode "Spouse" to "Head" if listed first
        if (IE1911A_0406() == 2) {
          a = 1000;
        }
        // Recode first "Parent" to "Head" if persons 1 and 2 are
        // "Parent" AND their relate strings don't both start with
        // "Father"
        if (countPeople() > 1) {
          if (IE1911A_0406() == 5 && IE1911A_0406(2) == 5 &&
              !(IE1911A_0407.getEditedString().substr(0, 6) == "Father" &&
                IE1911A_0407.getEditedString(2).substr(0, 6) == "Father")) {
            a = 1000;
          }
        }
      }
      if (PERNUM() == 2) {
        // Recode second "Parent" to "Spouse" if persons 1 and 2 are
        // "Parent" AND their relate strings don't both start with
        // "Father"
        if (IE1911A_0406() == 5 && IE1911A_0406(1) == 5 &&
            !(IE1911A_0407.getEditedString().substr(0, 6) == "Father" &&
              IE1911A_0407.getEditedString(1).substr(0, 6) == "Father")) {
          a = 2100;
        }
      }
    } break;
    default: {
    }
    }

    setData(a);
  }
};