0
votes

Comment puis-je remplir des valeurs NA dans une colonne de trame de données en fonction des valeurs d'une autre colonne?

Je voudrais remplir les valeurs NA dans la colonne F2, en fonction de la valeur F2 la plus courante lorsqu'elle est regroupée par F1-colonne.

  F1 F2
1 A  C
2 B  D
3 A  C
4 A  C
5 B  D


2 commentaires

@ Leero11 Quelle valeur doit être insérée quand il y a des liens?


@Markus dans une situation de cravate l'une quelconque est ok


4 Réponses :


0
votes

Essayez ceci:

premier dans df2 i get Max comptage par la variable F1 où F2 n'est pas manquant. Cela vous donnera la valeur F2 la plus courante lorsque des groupes de F1. Je le rejoint sur les données originales.frame et utilisez un Mutate pour remplir par la nouvelle variable f2_fill puis supprimez-le de cette variable de la carafe. xxx


0 commentaires

1
votes

Voici un moyen d'utiliser dplyr : xxx

en cas de cravates, la préférence est donnée à l'ordre lexicographique.


0 commentaires

3
votes

Voici une solution de base r. Tout d'abord définir une fonction pour le mode (extrait de ici ), puis appliquez-la sur votre cadre de données, c'est-à-dire

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

df$F2 <- with(df, ave(F2, F1, FUN = function(i) replace(i, is.na(i), Mode(i))))

df
#  F1 F2
#1  A  C
#2  B  D
#3  A  C
#4  A  C
#5  B  D


0 commentaires

0
votes

Vous pouvez utiliser Ave avec Tableau et qui.max et sous-téléposez avec is.na quand il est Un caractère . xxx

données: xxx


0 commentaires