J'ai un long fichier cadre comme ce qui suit:R: Meilleure comparaison match
df <- structure(list(Date =c("2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08",
"2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08",
"2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08"),
Part=c("A", "A", "A", "A", "A", "A", "A", "A", "A",
"B", "B", "B", "B", "B", "B", "B", "B", "B",
"C", "C", "C", "C", "C", "C", "C", "C", "C"),
method=c("Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4",
"Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4",
"Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4"),
value= c(4L, 46L, 43L, 9L, 8L, 46L, 63L, 84L, 2L, 5L, 78L, 2L, 89L, 2L, 6L, 62L, 25L, 46L, 3L, 4L, 7L, 24L, 13L, 21L, 19L, 8L, 3L)),
class= "data.frame", row.names=c(NA, -27L))
Je voudrais créer une autre colonne appelée BestMethod
. La variable devrait être une liste de méthodes correspondant à la valeur la plus proche du type 3 par partie et par date. Par exemple, en 2011-01 pour la partie A, le type 1,2,3 a été appliqué et le type 1 était le plus proche du type 3. Sous BestMethod
, j'aurais le type1. Sinon, si les 3 types n'étaient pas appliqués, je mettrais NA.
(Dans Excel, il peut ressembler à ceci:
=INDEX(C2:F2, MATCH(MIN(ABS(C2:F2-B2)), ABS(C2:F2-B2),0))
alors ceci:
=IF(B2="", "NA", INDEX($C$1:$F$1,1,(MATCH(H2,C2:F2,0)))))
Je voudrais créer une autre colonne appelée FinalMethod
Je voudrais avoir le type le plus indiqué. Par exemple, pour 2011-01, 2011-02 pour la partie A, le type 1 correspondait mieux, mais en 2011-03, le type 2 était le meilleur. tch. Dans ce cas, je voudrais que le type 1 soit le FinalMethod
pour toutes les dates de cette partie.
J'ai essayé les éléments suivants:
which(abs(x-your.number)==min(abs(x-your.number)))
mais je suis everying mal à appeler les valeurs de données correctes et l'exécuter à travers chaque ligne.
Merci.
sortie souhaitée:
df <- structure(list(Date =c("2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08",
"2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08",
"2011-01", "2011-08", "2012-03", "2011-01", "2011-08", "2011-01", "2011-08", "2011-01", "2011-08"),
Part=c("A", "A", "A", "A", "A", "A", "A", "A", "A",
"B", "B", "B", "B", "B", "B", "B", "B", "B",
"C", "C", "C", "C", "C", "C", "C", "C", "C"),
method=c("Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4",
"Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4",
"Type1","Type1","Type1","Type2","Type2","Type3","Type3","Type4","Type4"),
value= c(4L, 46L, 43L, 9L, 8L, 46L, 63L, 84L, 2L, 5L, 78L, 2L, 89L, 2L, 6L, 62L, 25L, 46L, 3L, 4L, 7L, 24L, 13L, 21L, 19L, 8L, 3L),
BestModel=c("Type2", "Type1", "NA", "Type2", "Type1", "Type2", "Type1", "Type2", "Type1",
"Type1", "Type1Type4", "NA", "Type1", "Type1Type4", "Type1", "Type1Type4","Type1", "Type1Type4",
"Type2", "Type2", "NA", "Type2", "Type2", "Type2", "Type2", "Type2", "Type2"),
FinalModel= c("Type1Type2", "Type1Type2","Type1Type2", "Type1Type2","Type1Type2", "Type1Type2","Type1Type2","Type1Type2","Type1Type2",
"Type1", "Type1", "Type1", "Type1", "Type1", "Type1","Type1", "Type1", "Type1",
"Type2", "Type2","Type2", "Type2", "Type2", "Type2","Type2", "Type2", "Type2")),
class= "data.frame", row.names=c(NA, -27L))
La question est claire moi. Que signifie "plus proche du type 3"? Le type 3 n'est présent que pour les dates suivantes: 2013-08 et 2013-09 pour A, B et C, alors que les deux autres types ne le sont pas. Dans l'exemple, seul le type 1 est présent à la date 2011-01. Pourriez-vous rendre l'exemple et la sortie demandée un peu plus clairs? – missuse
Salut! Merci d'avoir noté cela. J'ai changé les dates, donc il y a des chevauchements. Pour ceux sans Type3, je voudrais par défaut à NA. Exemple: Pour la partie A, si le type 1 est le plus proche du type 3 en 2011-01, imprimez le type 1 sous la colonne BestMethod. S'il n'y a pas de type 3, imprimez NA sous la colonne BestMethod. 2ème partie: Pour la partie A, si le nombre total de type 1 est supérieur au total de type 2 pour toutes les dates, imprimez le type 1 sous FinalMethod. Merci. – flightless13wings
Pouvez-vous ajouter à la publication la sortie désirée? – Marcelo