lundi 13 juillet 2020

Labeling rows according to a condition in R

This an example of my df:

         date_time focal activity partner     dyad       g
1 14/08/2015 12:00    AN       G1      FK    AN_FK       g
2 14/08/2015 13:03    AN       G2      FK    AN_FK       g   
3 14/08/2015 13:13    AN       G3      FK    AN_FK       g    
4 14/08/2015 13:29    AN        N     <NA>     <NA>    <NA>   
5 14/08/2015 14:01    AN       G1      JN    AN_JN       g   
6 14/08/2015 14:12    AN        T     <NA>     <NA>    <NA> 
    

I want to create a conditional statement that will label consecutive 'g' occurences with the same number when consecutive dyads are the same.

The result should look like this:

         date_time focal activity partner     dyad       g   event
1 14/08/2015 12:00    AN       G1      FK    AN_FK       g       1
2 14/08/2015 13:03    AN       G2      FK    AN_FK       g       1 
3 14/08/2015 13:13    AN       G3      FK    AN_FK       g       1 
4 14/08/2015 13:29    AN        N     <NA>     <NA>    <NA>    <NA>
5 14/08/2015 14:01    AN       G1      JN    AN_JN       g       2
6 14/08/2015 14:12    AN        T     <NA>     <NA>    <NA>    <NA>

I have tried running this loop:

df <- list(df)

n <- 1

for (i in 1:length(df)) {ifelse(df$dyad[[i]] == df$dyad[[i + 1]] &
                                df$g[[i]] == 'g', 
                                df$event[[i]] <- n, focal$event[[i]] <- n + 1)
  n <- n + 1
}


And it does not work, at all. Any insight in how to make it work or advice are welcome! I am completely new to coding and R.

Thank you so much for the help.

Aucun commentaire:

Enregistrer un commentaire