J'ai un ensemble de données volumineuses qui, dans sa version courte, ressemble à ceci:
> df
Stimulus TimeDiff
S102 10332.4
S 66 1095.4
S103 2987.8
S 77 551.4
S112 3015.2
S 66 566.6
S114 5999.8
S 88 403.8
S104 4679.4
S 88 655.2
Je veux créer une nouvelle colonne df $ Accuracy où je dois attribuer des réponses correctes, incorrectes et des échecs en fonction de certaines valeurs (uniquement S 88, S 66, S 77) dans le df $ Stimulus et dans df $ TimeDiff. Par exemple, si S 88 est précédé de S114 ou S104 et que df $ TimeDiff pour cette ligne est inférieur à 710, attribuez «incorrect» dans df $ Accuracy. Ainsi, l'ensemble de données ressemblerait à ceci:
> df
Stimulus TimeDiff Accuracy
S102 10332.4 NA
S 66 1095.4 NA
S103 2987.8 NA
S 77 551.4 NA
S112 3015.2 NA
S 66 566.6 NA
S114 5999.8 NA
S 88 403.8 incorrect
S104 4679.4 NA
S 88 655.2 incorrect
Quelle est la meilleure façon de le faire?
Vous pouvez utiliser ifelse
et lag
fonctionner à partir de dplyr
,
library(dplyr)
df$Accuracy <- with(df, ifelse(Stimulus %in% c('S88', 'S66', 'S77') &
lag(Stimulus) %in% c('S114', 'S104') &
TimeDiff < 710, 'incorrect', NA))
df
# Stimulus TimeDiff Accuracy
#1 S102 10332.4 <NA>
#2 S66 1095.4 <NA>
#3 S103 2987.8 <NA>
#4 S77 551.4 <NA>
#5 S112 3015.2 <NA>
#6 S66 566.6 <NA>
#7 S114 5999.8 <NA>
#8 S88 403.8 incorrect
#9 S104 4679.4 <NA>
#10 S88 655.2 incorrect
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots