Текст в столбцы для большого поля - PullRequest
0 голосов
/ 22 апреля 2020

Итак, у меня есть столбец ниже «Имена», который разделен каналом, 1 ячейка этого столбца выглядит следующим образом:

Tom Miner | Джон Смит | Мэри Лейн | Том Белл | Стив Холл | Мартин Лонг | Джон Смолл | Марк Талл | Энн Болл | Алан Call | Дэвид Фолл | Клинт Молл |

это 10 000 полей данных, и я хочу создать 4 новых столбца для «Имен» с первыми 4 именами из поля:

Lead Actor    Lead Supporting Actor   Supporting Actor 1    Supporting Actor 2 
Tom Miner     John Smith              Mary Lane             Tom Bell

может быть до 40 имен в столбце или всего 10, но я хочу разделить поле только на 4 столбца выше.

Я пробовал изменить форму и тидир, но не могу заставить это работать, любая помощь приветствуется.

Столбец «Имена»:

Ячейка 1 Брэд Питт | Томми Ли Джонс | Рут Негга | Джон Ортис | Лив Тайлер | Дональд Сазерленд | Грег Брик | Лорен Дин | Кимберли Элиз | Джон Финн | LisaGay Гамильтон | Донн ie Кешаварз | Бобби Ни sh | Шон Блейкмор | Фрида Фо Шен | Кайла Адамс | Рави Капур | Элиза Перри | Даниэль Саули | Кимми Шилдс | Кунал Дудхекер | Элисон Рид | Саша Компере | Джастин Дрей | Александрия Руссе | Наташа Лённе | Зоро Саро Мануэль Даглян | Джейкоб Сэндлер | Elizabeth Willaman

Cell 2 Vin Diesel | Эйза Гонсалес | Сэм Хьюган | Тоби Кеббелл | Талула Райли | Ламорн Моррис | Гай Пирс | Йоханнес Хаукур Йоханнессон | Алекс Эрнандес | Сиддхарт Дхананджай | Укротитель Бурджак | Клайд Бернинг | Дэвид Дукас | Тайрел Мейер | Алекс Анлос | Мартен Ремер | Патрик Кертон | Райан Крюгер Уилл Смит | Мартин Лоуренс | Паола Нуньес | Ванесса Хадженс | Александр Людвиг | Чарльз Мелтон | Кейт дель Кастильо | Ники Джем | Джо Пантолиано | Тереза ​​Рэндл | Джейкоб Сципион | Масси Фурлан | Майкл Бэй | DJ Халед | Деррик Гилберт | Джей Дубб | Эмили Тоулз | Скотт Рапп | С Днем Андерсона | Мелисса Кеннемор | Дженнифер Бэджер | Бьянка Бетьюн | Деннис Грин | Дженин Гонсалес

Ячейка 3: Пол Радд | Майкл Дуглас | Эванджелин Лилли | Кори Столл | Бобби Каннавале | Энтони Мак ie | Джуди Грир | Эбби Райдер Фортсон | Майкл Пеин | Давид Дастмалчян | TI | Вуд Харрис | Хейли Этвелл | Джон Слэттери | Мартин Донован | Гаррет Моррис | Грегг Туркингтон | Род Халлетт | Джо Крест | Джо Букаро III | Жан Луиза Келли | Дакс Гриффин | Хейли Ловитт | Анна Акана | Стэн Ли | Крис Эванс | Себастьян Стэн | Том Кенни | Норма Альварес | Дар cie Изабелла Коттрелл | Тедди Уильямс | Кэрол Энн Уоттс | Чак Дэвид Уиллис | Диана Киритеску | Неко Пархам | Онира Тарес | Килен Дэвис | Замани Уайлдер | Джим Р. Коулман | Десмонд Филлипс | Аарон Сакстон | Майкл А. Кук | Рики Ландер | Рус Блэквелл | Джонни Пембертон | Николас Баррера | Карлос Авилес | Линди ЛаРозе | Роберт Крэйтон | Аджани Перкинс | Jessejames Locorriere | Зак Дюаме | Кевин Лач | Майкл Трислер | Дэниел Стивенс | Алекс Чанский | Клей Донахью Фонтено | Майкл Яморски | Кейси Пьеретти | Антал Калик | Адам Харт | Рувим Лэнгдон | Тодд Шнайдер | Кевин Буттимер | Дэнни Васкес | Рик Эйвери | Эрик Беттс

Результат, которого я хочу достичь, это Лицо 1 Лицо 2 Лицо 3 Лицо 4
Брэд Питт Томми Ли Джонс Рут Негга Джон Ортис

так что 5 новых столбцов в моем фрейме данных - остальные имена в ячейке не требуются

1 Ответ

0 голосов
/ 22 апреля 2020

Если в ваших данных есть столбец с 10 000 ячеек, а в каждой из ячеек есть значения, аналогичные приведенному вами примеру, вы можете использовать separate из пакета tidyr.

# sample data 
df <- data.frame(Names = "Tom Miner | John Smith | Mary Lane | Tom Bell | Steve Hall | Martin Long | John Small", stringsAsFactors = FALSE)

library(tidyr)
df %>% separate(Names, c("Lead Actor", "Lead Supporting Actor", "Supporting Actor 1", "Supporting Actor 2"), sep = " \\| ", extra = "drop")

Здесь код разделяет Names (столбец со всеми именами) на разделитель "|" (с escape-кодом ('\') для строки '|'), и мы держим первые четыре и оставляем остальные.

Подробнее о separate: https://tidyr.tidyverse.org/reference/separate.html

...