J'ai un cadre de données qui a le formulaire suivant 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: p> Je vais bien si la null est une chaîne de longueur zéro et je peux gérer la décollage des supports. P> P> >
3 Réponses :
échantillon de données Nous pouvons tirer p> résultats p> pages code> hors
myDAT code> pour y travailler. p>
Ricardo semble que nous avons besoin d'un pré-traitement avant d'utiliser cette solution, devez-vous ajouter | i> comme séparateur?
@Astudy, aucun prétraitement nécessaire. J'ai ajouté le | code> 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 code>). Étant donné que l'OP n'a pas donné de nom au cadre de données, je l'ai appelé
myDAT code>. Il devrait tous être copier + la pâte.
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)
Mon paquet "SplitStackshape" a une fonction qui répond à ce type de problème. La fonction pertinente dans ce cas est concat.split code> et fonctionne comme suit (en utilisant "MyDAT" de la réponse de Ricardo):