jeudi 25 mars 2021

R: Troubles with ifelse

I have two measures for the same object. The measure is binary (1,0) but many observations are also missing, such that the possible options are: 1, 0, NA.

Data Have:

Source1 Source2
NA      NA
NA      0
NA      1
0       NA
0       0
0       1
1       NA
1       0
1       1

(Sources can contradict each other, ignore that for now).

I would like to create a third composite variable that summarizes the two variables, such that IF EITHER of the two sources = 1, then the composite variable should be equal to 1. Otherwise, if either of the sources is not missing, then the composite variable should be equal to zero. Lastly, only if both sources are missing, the composite variable should be set to missing.

Data Want:

Source1 Source2 Composite
NA      NA      NA
NA      0       0
NA      1       1
0       NA      0
0       0       0
0       1       1
1       NA      1
1       0       1
1       1       1

I have tried different approaches but continue to have the same issue.

Attempt 1:

df<- df %>% mutate(combined = ifelse(df$source1==1 | df$source2==1, 1, 
                              ifelse(df$source1==0 | df$source2==0, 0, NA)))

Attempt 2:

df2<- df %>% mutate(combined = ifelse(is.na(df$source1)   & is.na(df$source2), NA, 
                               ifelse(df$source1 == 1     | df$source2 ==1,    1, 0)))

Attempt 3:

df3<- df %>% mutate(combined = ifelse(df$source1==1, 1, 
                               ifelse(df$source1==0 & df$source2==1, 1,
                                      ifelse(df$source1==0 &     df$source2==0, 0,
                                      ifelse(df$source1==0 & is.na(df$source2), 0,       
                               ifelse(is.na(df$source1) & df$source2'==1, 1,
                                      ifelse(is.na(df$source1) & df$source2==0, 0, NA)))))))

The codes identify whether there is a 1 in either source, but the rest of the values are all missing regardless of there being a 0 or not.

Actual Output:

Source1 Source2 Composite
NA      NA      NA
NA      0       NA
NA      1       1
0       NA      NA
0       0       NA
0       1       1
1       NA      1
1       0       1
1       1       1

Aucun commentaire:

Enregistrer un commentaire