I have this data frame, q17, below. My goal is replacing "contacts" following these rules:
if any values in q17a, q17d, q17f, q17g <5 then contacts is 1
if any values in q17a, q17d, q17f, q17g ==5 then contacts is 0
if any values in q17a, q17d, q17f, q17g ==8 or 9 then contacts is 99
if any values in q17a, q17d, q17f, q17g ==NA then contacts is 99
q17[1:50,]
q17a q17d q17f q17g contacts
1 2 5 2 NA NA
2 5 5 5 NA NA
3 1 5 5 NA NA
4 4 NA 5 NA NA
5 1 5 5 5 NA
6 3 5 NA NA NA
7 4 5 5 NA NA
8 5 5 1 NA NA
9 4 5 NA NA NA
10 4 5 4 NA NA
11 1 5 5 5 NA
12 3 5 5 NA NA
13 4 4 3 4 NA
14 5 NA 5 NA NA
15 5 5 5 5 NA
16 5 NA 4 NA NA
17 1 5 NA NA NA
18 4 5 3 NA NA
19 4 5 4 NA NA
20 3 5 5 NA NA
21 5 5 4 NA NA
22 4 5 2 NA NA
23 4 NA 3 NA NA
24 5 NA NA NA NA
25 2 5 5 NA NA
26 2 5 4 5 NA
27 3 NA 3 NA NA
28 1 NA 1 NA NA
29 5 5 5 NA NA
30 2 5 5 NA NA
31 5 5 NA NA NA
32 2 5 4 NA NA
33 4 4 3 3 NA
34 5 NA 5 NA NA
35 5 5 5 4 NA
36 5 5 4 4 NA
37 2 5 5 5 NA
38 4 5 NA NA NA
39 1 5 1 NA NA
40 4 5 5 5 NA
41 3 5 NA NA NA
42 4 5 4 NA NA
43 5 NA NA NA NA
44 5 5 NA NA NA
45 2 5 3 3 NA
46 5 5 5 NA NA
47 2 5 3 5 NA
48 3 5 5 NA NA
49 5 5 5 5 NA
50 5 5 NA NA NA
I tried follwing for example, which is not efficient at all. Can somebody suggest a better way doing this?
d1$q17d <- ifelse(d1$q17d==1|d$q17d==2|d$q17d==3|d$q17d==4,1,d1$q17d)
d1$q17d <- ifelse(d1$q17d==5,0,d1$q17d)
d1$q17d <- ifelse(d1$q17d==8, d1$q17d)
d1$q17d <- ifelse(is.na(d1$q17d),99, d1$q17d)
d1$contacts <- ifelse(d1$q17d==1,1,d1$contacts)
d1$contacts
Aucun commentaire:
Enregistrer un commentaire