replace NA value with the group value

后端 未结 5 730
栀梦
栀梦 2020-11-27 22:15

I have a df as follows which has 20 people across 5 households. Some people within the household have missing data for whether they have a med_card or not. I want to give th

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-27 22:30

    data.table solution

    library(data.table)
    setDT(df)[, med_card2 := unique(med_card[!is.na(med_card)]), by = hhold_no]
    
    #     person_id hhold_no med_card med_card2
    #  1:         1        1        1         1
    #  2:         2        1        1         1
    #  3:         3        1       NA         1
    #  4:         4        1       NA         1
    #  5:         5        1       NA         1
    #  6:         6        2        0         0
    #  7:         7        2        0         0
    #  8:         8        2        0         0
    #  9:         9        2        0         0
    # 10:        10        3       NA         1
    # 11:        11        3       NA         1
    # 12:        12        3       NA         1
    # 13:        13        3        1         1
    # 14:        14        3        1         1
    # 15:        15        4        1         1
    # 16:        16        4        1         1
    # 17:        17        5        1         1
    # 18:        18        5        1         1
    # 19:        19        5       NA         1
    # 20:        20        5       NA         1
    

提交回复
热议问题