Existe-t-il un moyen d'utiliser R pour marquer les valeurs s'il y a eu une occurrence d'appel après l'envoi d'un texte? La ligne précédente doit avoir "Texte" comme méthode plutôt qu'un "Appel" basé sur les valeurs d'ID uniques.

Original Data

J'ai besoin:

Final Result

Mon code:

for (i in unique(textdata1$ClaimID1)) {
    if(textdata1$ContactMethod[i] == 'Email' && textdata1$ContactMethod[i+1] == 'Call'){
     textdata1$marker[i] <- "No"
        }else {
     textdata1$marker[i] <- "Yes"
       }
    }
r
0
TP89 27 août 2020 à 00:28

2 réponses

Meilleure réponse

On peut créer le 'flag' en utilisant une comparaison avec le lag de 'Method' après regroupement par 'ID'

library(dplyr)
df1 %>%
    group_by(ID) %>%
    mutate(Flag = +(Method == 'Call' & lag(Method, default = first(Method)) == 'Call'))
0
akrun 26 août 2020 à 21:30

Vous pouvez attribuer 1 lorsque le Method == 'Call' actuel et la ligne précédente étaient 'Text'.

En utilisant data.table, cela peut être fait comme:

library(data.table)
setDT(df)[, Flag := as.integer(Method == 'Call' & 
                    shift(Method, fill = first(Method)) == 'Text'), ID]
0
Ronak Shah 27 août 2020 à 04:40