6
votes

Split Strings en colonnes dans R où chaque chaîne a un nombre potentiellement différent d'entrées de colonne

J'ai un cadre de données qui a le formulaire suivant xxx

et ce que je dois faire est divisé la première colonne des virgules et créer suffisamment de nouvelles colonnes pour couvrir la séquence la plus longue. . Le résultat devrait être: xxx

Je vais bien si la null est une chaîne de longueur zéro et je peux gérer la décollage des supports. >

r

0 commentaires

3 Réponses :


3
votes

échantillon de données xxx

Nous pouvons tirer pages hors myDAT pour y travailler. xxx



résultats xxx


2 commentaires

Ricardo semble que nous avons besoin d'un pré-traitement avant d'utiliser cette solution, devez-vous ajouter | comme séparateur?


@Astudy, aucun prétraitement nécessaire. J'ai ajouté le | dans les données d'échantillon simplement pour faciliter la copie et la coller, mais il disparaît dans la même ligne (c.-à-d. Par read.table ). Étant donné que l'OP n'a pas donné de nom au cadre de données, je l'ai appelé myDAT . Il devrait tous être copier + la pâte.



2
votes

read.table code> avec remplir = true code> peut les remplir. Les noms (DF2) peuvent être omis si une belle colonne Les noms ne sont pas importants. Aucun packages n'est utilisé.

 ord <- c('First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh',
 'Eighth', 'Ninth', 'Tenth', 'Eleventh', 'Twelfth', 'Thirteenth',
 'Fourteenth', 'Fiftheenth', 'Sixteenth', 'Seventeenth', 'Eighteenth', 
 'Nineteenth')
ix <- seq_along(DF2)
names(DF2) <- if (ncol(DF2) < 20) paste(ord[ix], "Page") else paste("Page", ix)


0 commentaires

4
votes

Mon paquet "SplitStackshape" a une fonction qui répond à ce type de problème. La fonction pertinente dans ce cas est concat.split et fonctionne comme suit (en utilisant "MyDAT" de la réponse de Ricardo): XXX


0 commentaires