#r #tidyverse #tidyr
Вопрос:
У меня есть некоторые данные, которые я удалил из автономного источника с помощью некоторого программного обеспечения для распознавания текста. Это выглядит примерно так же, как приведенные ниже данные, но менее эльфийски.
elvish_ring_holders_unclean <- tibble(
name=c("Gandalf", "Galadriel", "Elrond", "CirdannnGil-Galad"),
city = c("Undying Lands","Lothlorien","Rivendell", "MithlondnnLindon"),
race = c("Maiar", "Elf", "Elf", "ElfnnElf"))
Проблема для обоих наборов данных заключается в том, что некоторые строки были объединены вместе с пробелами. Что я бы предпочел, так это что-то вроде приведенных ниже данных, где каждое наблюдение имеет свою собственную строку
elvish_ring_holders <- tibble(
name=c("Gandalf", "Galadriel", "Elrond", "Cirdan","Gil-Galad"),
city = c("Undying Lands","Lothlorien","Rivendell", "Mithlond", "Lindon"),
race = c("Maiar", "Elf", "Elf", "Elf", "Elf"))
До сих пор я пробовал подход tidyr::separate_rows
elvish_ring_holders %>%
separate_rows(name, sep = "nn") %>%
separate_rows(city, sep = "nn") %>%
separate_rows(race, sep = "nn") %>%
distinct()
Но в итоге я получаю набор данных, в котором у Гил-Галада и Цирдана есть два наблюдения с двумя разными городами с одним истинным городом и одним ложным городом.
В моих внешних данных моя переменная расы также может дублироваться таким образом, и данные содержат больше наблюдений. То, что я ищу, — это какой-то метод разделения строк, которые могут разделяться один раз по нескольким кольцам.
Комментарии:
1. Вы показали свои данные и желаемый результат. Пожалуйста, покажите нежелательный результат, который вы тоже получаете.
2. Спасибо за совет @GuedesBF. Реализованный.
Ответ №1:
Вместо того, чтобы отделять каждый столбец по отдельности, сделайте их все за один раз.
elvish_ring_holders_unclean %>%
separate_rows(everything(), sep = "nn")
Имя | город | гонка | |
---|---|---|---|
1 | Гэндальф | Бессмертные земли | Майяр |
2 | Галадриэль | Лотлориен | Эльф |
3 | Элронд | Ривенделл | Эльф |
4 | Цирдан | Митлонд | Эльф |
5 | Гил-Галад | Линдон | Эльф |
Комментарии:
1. Это именно то, что я искал! Я понятия не имел, что через него можно протянуть несколько колов одновременно. Спасибо!
2. Да, именно так. Ты опередил меня в ударе