J'ai un exemple de Dataframe avec 4 colonnes. Il a une colonne avec des noms d'oiseaux et des résultats de 3 tests différents. S'il y a un numéro dans les colonnes de test, cela signifie que le test est positif.
Birdspecies Total Test1 Test2 Test3 1 Blackbird 4 3 2 0 2 Bluethroat 3 1 2 0 3 Feral pigeon 2 2 1 0 4 Tufted Duck 1 0 1 0
3 Réponses :
Je pense que le code ci-dessous devrait aider:
library(dplyr) df1 = df %>% mutate(Count = 1) %>% mutate_at(vars(Test1,Test2,Test3),funs(as.numeric)) %>% mutate_at(vars(Test1,Test2,Test3),funs(ifelse(is.na(.),0,1))) %>% group_by(Birdspecies) %>% summarise_all(funs(sum))
Votre code donne la sortie souhaitée pour l'exemple de données, mais j'ai commis une petite erreur dans mon poste. Mes données réelles ont des cellules vides, un texte tel que "ND" et les valeurs numériques positives. Lorsque j'utilise votre code sur mes données réelles, je reçois la même valeur numérique dans chaque colonne.
Pour clarifier: les fréquences comptées sont des sommes de tout (cellules avec du texte et des cellules avec des valeurs numériques). Savez-vous comment exclure les cellules avec du texte de la somme?
@Kakschoen, j'ai mis à jour le code, as.numeric code> convertira tous les caractères en NA code> qui devrait résoudre votre but.
base r:
Vous pouvez utiliser data.Table package