lundi 21 janvier 2019

recode using ifelse clause within groups

I'm trying to set up column (called 'combined) to indicate the combined information of owner and Head within each group (Group). There is only 1 owner in each group, and 'Head' is basically the first row of each group that has the minimum id value. This combined column should flag '1' if the ID is flagged as owner, then the rest of the id within each group will be 0 regardless of the information in 'Head'. However for groups that do not have any Owner in the IDs (i.e. all 0 in owner within the group), then this column will take the Head column information. My data looks like this and the last column (combined) is the desired outcome.

sample <- data.frame(Group = c("46005589", "46005589","46005590","46005591", "46005591","46005592","46005592","46005592", "46005593", "46005594"), ID= c("189199", "2957073", "272448", "1872092", "10374996", "1153514", "2771118","10281300", "2610301", "3564526"), Owner = c(0, 1, 1, 0, 0, 0, 1, 0, 1, 1), Head = c(1, 0, 0, 1, 0, 1, 0, 0, 1, 1), combined = c(0, 1, 1, 1, 0, 0, 1, 0, 1, 1))

    > sample
      Group       ID Owner Head combined
1  46005589   189199     0    1        0
2  46005589  2957073     1    0        1
3  46005590   272448     1    0        1
4  46005591  1872092     0    1        1
5  46005591 10374996     0    0        0
6  46005592  1153514     0    1        0
7  46005592  2771118     1    0        1
8  46005592 10281300     0    0        0
9  46005593  2610301     1    1        1
10 46005594  3564526     1    1        1

I've tried a few dplyr and ifelse clauses and it didn't seem to give outputs to what I wanted. How should I recode this column? Thanks.

Aucun commentaire:

Enregistrer un commentaire