0
votes

Fractionnement de colonnes avec un nombre différent de lignes, y compris les titres

J'ai une image de données comme ci-dessous xxx

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.

En conséquence, j'ai besoin d'obtenir le fichier data.frame comme tel: xxx

à 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.

Que dois-je faire pour diffuser des valeurs et rester le nom des quatrième et cinquième colonnes?


0 commentaires

4 Réponses :


1
votes

Si vous utilisez Tidyverse (quels importations tiardy aussi) Vous pouvez utiliser séparer : xxx

Le résultat obtenu à partir de cette étape: xxx

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 sep = '' est le caractère à séparer par.

Vous pouvez également spécifier la manipulation et les trucs de Na, voir ici:

https://tiidyr.tidyverse.org/reeference/separate.html

L'autre personne est arrivée à la réponse complète plus vite, donc je ne vais pas finir de taper une completage solution.


2 commentaires

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.



0
votes

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 dput (DF) , car cela peut être lu plus facilement. xxx

i réglez supprimer = faux 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 (la valeur par défaut).


0 commentaires

0
votes

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


0 commentaires

0
votes

Bien sûr, je choisirais La réponse de Ryan , mais si on veut éviter les noms de codage rigide, cela fonctionne. < Pré> xxx

Data: xxx


0 commentaires