J'ai une image de données comme ci-dessous pour la décrire: il y a une troisième colonne (type_location) dans laquelle les enregistrements contiennent des chaînes séparées par ":", à différentes longueurs et ceci est Nom de la valeur dans la quatrième et cinquième colonnes. P> En conséquence, j'ai besoin d'obtenir le fichier data.frame comme tel: p> à décrire - J'ai besoin de séparer les valeurs dans les colonnes 4 et 5, dans les nouvelles colonnes et donnez-leur le nom en fonction des enregistrements dans les colonnes 3. Il existe un nombre différent de valeurs séparées par ":" dans la troisième colonne. P> Que dois-je faire pour diffuser des valeurs et rester le nom des quatrième et cinquième colonnes? P> p>
4 Réponses :
Si vous utilisez Le résultat obtenu à partir de cette étape: p> pour séparer le premier argument est votre Dataframe, la deuxième est la colonne à séparer, le troisième est le vecteur de la colonne. noms, et Vous pouvez également spécifier la manipulation et les trucs de Na, voir ici: P> https://tiidyr.tidyverse.org/reeference/separate.html p> L'autre personne est arrivée à la réponse complète plus vite, donc je ne vais pas finir de taper une completage solution. p> p> Tidyverse code> (quels importations tiardy code> aussi) Vous pouvez utiliser séparer code>: sep = '' code> est le caractère à séparer par. P>
Mais l'indice est de prendre les noms de la troisième colonne et de mettre au nom de nouvelles colonnes (et leur nombre diffère, donc je ne peux donc pas construire un vecteur fixe avec des noms).
Ok, maintenant je répète mes typos (plusieurs) et cela fonctionne maintenant.
Je suis sûr, il y a des manières plus élégantes que les miennes, mais utilisez dplyr / tendyverse, vous pouvez faire ce qui suit.
Il est toujours considéré comme poli de fournir vos données comme sortie de i réglez dput (DF) Code>, car cela peut être lu plus facilement. p> supprimer = faux code> afin que vous puissiez vérifier la sortie plus facilement. Si vous souhaitez supprimer les colonnes d'origine, il suffit de définir supprimer = t code> (la valeur par défaut). p> p>
Voici une approche de données.Table (qui peut probablement être raccourcie) ...
# ID age value_1_city value_1_country value_1_province value_2_city value_2_country value_2_province # 1: 1 83 J X A I X A # 2: 2 15 K X <NA> J X <NA> # 3: 3 2 I Y B I Y B # 4: 4 12 L X <NA> K Z <NA> # 5: 5 2 J Y <NA> J X <NA> # 6: 6 2 M Y A I Y B # 7: 7 18 J X B L X A # 8: 8 85 I X A M Y B
Bien sûr, je choisirais La réponse de Ryan , mais si on veut éviter les noms de codage rigide, cela fonctionne. < Pré> xxx pré>