J'ai des données de participants à une étude de recherche. J'essaie de noter leurs réponses en attribuant une valeur de 1 si leur réponse est correcte et de 0 si ce n'est pas le cas.

Dans ce cas, Q1 représente les réponses à la première question. "Oui" est la bonne réponse. Je suis entré:

if (is.na(Q1) || Q1 == "Yes") {Q1 <- 1} else {Q1 <- 0}

Et toutes les données de Q1 ont été remplacées par 1, juste 1, rien d'autre, alors que je m'attendais à un ensemble de 0 et de 1.

Pourriez-vous s'il vous plaît me dire où je me suis trompé?

1
saskatchewan 3 nov. 2020 à 12:18

2 réponses

Meilleure réponse

Vous devez utiliser ifelse:

ans <- ifelse(is.na(Q1) | Q1 == "Yes", 1, 0)

Vous pouvez également faire cela sans ifelse en convertissant les valeurs logiques en entier.

ans <- as.integer(is.na(Q1) | Q1 == "Yes")
2
Ronak Shah 3 nov. 2020 à 09:22

Nous pouvons également utiliser + pour forcer le logique en binaire

ans <- +(is.na(Q1)| Q1 == "Yes")
1
akrun 3 nov. 2020 à 21:22