J'ai donc ces données et ce que je voudrais faire est de créer une variable qui reflète le groupe le plus haut statut chaque année. Chaque groupe peut avoir le statut: * 1 = Monopoly, * 2 = Dominant, * 3 = Principal, * 4 = Junior ou * 5 = Discriminé. Les groupes qui sont 1 ou 2 obtiendraient automatiquement le statut le plus élevé, car chaque pays n'aurait qu'un groupe qui détient ce statut au cours d'une année donnée. Certains pays ont toutefois plusieurs groupes appartenant à 3 (et 3 est aussi, parfois, le plus haut statut de groupe qui peut être atteint dans ce pays pour cette année) et dans ce cas, je voudrais le groupe avec la plus grande taille pour être codé comme celui avec le statut le plus élevé. Comment puis-je faire cela?itérations en cours en R pour créer une nouvelle variable avec des conditions spécifiques
données
D1 <- data.frame(row = c(1, 2, 3, 4, 5, 6, 7 , 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
country = c("US", "US", "US", "US", "US", "US", "US", "US","US", "US", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada"),
year = c(1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995),
group = c("White", "White", "White", "White", "White", "Latino", "Latino", "Latino", "Latino", "Latino","English", "English", "English", "English", "English", "French", "French", "French", "French", "French"),
groupstatus = c("1", "1", "1", "3", "3", "5", "5","5", "3", "3", "2", "2", "2", "3", "3", "3", "3", "3", "3", "4"),
groupsize= c(0.7, 0.7, 0.7, 0.7, 0.7, 0.15, 0.15, 0.15, 0.15, 0.15, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2))
souhaité Sortie
D1 <- data.frame(row = c(1, 2, 3, 4, 5, 6, 7 , 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
country = c("US", "US", "US", "US", "US", "US", "US", "US","US", "US", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada"),
year = c(1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995, 1991, 1992, 1993, 1994, 1995),
group = c("White", "White", "White", "White", "White", "Latino", "Latino", "Latino", "Latino", "Latino","English", "English", "English", "English", "English", "French", "French", "French", "French", "French"),
groupstatus = c("1", "1", "1", "3", "3", "5", "5","5", "3", "3", "2", "2", "2", "3", "3", "3", "3", "3", "3", "4"),
groupsize= c(0.7, 0.7, 0.7, 0.7, 0.7, 0.15, 0.15, 0.15, 0.15, 0.15, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2),
highest= c(1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0))
Bonjour Akrun, je suis un double contrôle de mes données et pour une raison quelconque, ce code est convertissons TOUS les groupstatus == 3 au plus haut au lieu de celui qui est la plus grande taille dans une année donnée, étant donné qu'il n'y a pas de 1 ou 2 cette année-là. Pourriez-vous savoir pourquoi c'est? – rbeginner
@rbeginner Une façon de vérifier est d'avoir un exemple qui l'imite. Pouvez-vous mettre à jour avec un nouvel exemple qui prendra soin d'elle. – akrun
l'exemple aurait théoriquement imité le problème, mais lors de l'exécution dans l'ensemble de données complet, il semble y avoir des problèmes. Je ne sais pas exactement comment le faire mais il est impératif qu'il n'y ait qu'un seul groupe par année-pays à la fin. je vais poster le dput() d'un sous-ensemble de mes données. peut-être que cela aidera. – rbeginner