On suppose, j'ai une trame de données comme ci-dessous
DF1:Comment utiliser la propagation() pour obtenir souhaitée sortie
+------+--+------+--------+
| ID | | Type | Points |
+------+--+------+--------+
| DJ45 | | A | 69.2 |
| DJ45 | | F | 60.8 |
| DJ45 | | C | 2.9 |
| DJ46 | | B | 22.7 |
| DJ46 | | D | 18.7 |
| DJ46 | | A | 16.1 |
| DJ47 | | E | 67.2 |
| DJ47 | | C | 63.1 |
| DJ47 | | F | 16.7 |
| DJ48 | | D | 8.4 |
+------+--+------+------+
Je veux obtenir un résultat qui fournira le Top valeur 2 (point sage) de saisir ci-dessous le format:
sortie:
+------+---------+---------+
| ID | Type1 | Type2 |
+------+---------+---------+
| DJ45 | A | F |
| DJ46 | B | D |
| DJ47 | E | C |
| DJ48 | D | NA |
Je l'ai utilisé:
df1 %>%
group_by(Id) %>%
top_n(2,wt=Points) %>%
mutate(val = paste("Type", row_number())) %>%
filter(row_number()<=2) %>%
select(-Points) %>%
spread(val, Type)
mais je reçois la réponse suivante:
sortie:
+------+------+--------+---------+
| ID |Points|Type1 | Type2 |
+------+------+--------+---------+
| DJ45 | 69.2 | A | NA |
| DJ45 | 60.8 | NA | F |
| DJ46 | 22.7 | B | NA |
| DJ46 | 18.7 | NA | D |
| DJ47 | 67.2 | E | NA |
| DJ47 | 63.1 | NA | C |
| DJ48 | 8.4 | D | NA |
Veuillez fournir un exemple reproductible que nous pouvons copier/coller dans nos sessions. –
Veuillez utiliser 'dput (df1)' pour fournir les données dans un format facile à utiliser. –
Votre code ne correspond pas à votre résultat. 'select (-Points)' ne devrait pas retourner un fichier data.frame qui contiendra toujours 'Points' (ce qui explique pourquoi ce n'est pas' spread'ing). – alistaire