#r
Вопрос:
Я пытаюсь создать проект по сбору данных со спортивными командами, и мне было интересно, есть ли способ, которым я мог бы взять обычный текст и превратить его в тиббл с данными, разделенными на город и талисман.
tibble("City, Mascot,
Arizona Diamondbacks
Atlanta Braves
Baltimore Orioles
Boston Red Sox
Chicago White Sox
Chicago Cubs
Cincinnati Reds
Cleveland Indians
Colorado Rockies
Detroit Tigers
Houston Astros
Kansas City Royals
Los Angeles Angels
Los Angeles Dodgers
Miami Marlins
Milwaukee Brewers
Minnesota Twins
New York Yankees
New York Mets
Oakland Athletics
Philadelphia Phillies
Pittsburgh Pirates
San Diego Padres
San Francisco Giants
Seattle Mariners
St. Louis Cardinals
Tampa Bay Rays
Texas Rangers
Toronto Blue Jays
Washington Nationals
"
)
В принципе, я могу редактировать код так, чтобы мне не приходилось вручную изменять каждый из них вручную, но при необходимости я могу внести небольшие коррективы. Я делаю это для того, чтобы объединить его с другими данными по городам.
Комментарии:
1. Копирование ваших данных дает 1 кадр данных строки с каким-то странным именем столбца. Вы уверены, что данные верны ? Можете ли вы включить ожидаемый результат для данных ?
Ответ №1:
Немного черной магии регулярных выражений
library(tidyverse)
example_data <- tibble::tribble(
~data,
"Arizona Diamondbacks",
"Atlanta Braves",
"Baltimore Orioles",
"Boston Red Sox",
"Chicago White Sox",
"Chicago Cubs",
"Cincinnati Reds",
"Cleveland Indians",
"Colorado Rockies",
"Detroit Tigers",
"Houston Astros",
"Kansas City Royals",
"Los Angeles Angels",
"Los Angeles Dodgers",
"Miami Marlins",
"Milwaukee Brewers",
"Minnesota Twins",
"New York Yankees",
"New York Mets",
"Oakland Athletics",
"Philadelphia Phillies",
"Pittsburgh Pirates",
"San Diego Padres",
"San Francisco Giants",
"Seattle Mariners",
"St. Louis Cardinals",
"Tampa Bay Rays",
"Texas Rangers",
"Toronto Blue Jays",
"Washington Nationals"
)
example_data |>
mutate(city = str_remove(data,'[[:alpha:]]
Создано в 2021-10-18 годах пакетом reprex (v2.0.1)
Комментарии:
1. Это не идеально, потому что иногда это Сент-Луис или Уайт Сокс, я не могу придумать правило, чтобы решить, какая часть принадлежит городу, а какая принадлежит талисману, я выбираю последнее слово, чтобы быть талисманом...
2. Если бы у вас был список названий городов, вы могли бы проверить данные на наличие названий городов и разбить их таким образом? ВОЗМОЖНО, НАМНОГО МЕДЛЕННЕЕ, но, может быть, это не слишком большое
3. Да, вы можете это сделать, я не думаю, что скорость имеет значение, в большинстве случаев это всегда будет глупо быстро до такой степени, что она может работать в 1000 раз медленнее
4. @Bruno Как быстро добавить запятые в конце каждой строки? Я не очень хорошо знаком с регулярными выражениями.
) |> str_trim(),
macot = str_extract(data,'[[:alpha:]]Создано в 2021-10-18 годах пакетом reprex (v2.0.1)
Комментарии:
1. Это не идеально, потому что иногда это Сент-Луис или Уайт Сокс, я не могу придумать правило, чтобы решить, какая часть принадлежит городу, а какая принадлежит талисману, я выбираю последнее слово, чтобы быть талисманом...
2. Если бы у вас был список названий городов, вы могли бы проверить данные на наличие названий городов и разбить их таким образом? ВОЗМОЖНО, НАМНОГО МЕДЛЕННЕЕ, но, может быть, это не слишком большое
3. Да, вы можете это сделать, я не думаю, что скорость имеет значение, в большинстве случаев это всегда будет глупо быстро до такой степени, что она может работать в 1000 раз медленнее
4. @Bruno Как быстро добавить запятые в конце каждой строки? Я не очень хорошо знаком с регулярными выражениями.
))
#> # A tibble: 30 x 3
#> data city macot
#> <chr> <chr> <chr>
#> 1 Arizona Diamondbacks Arizona Diamondbacks
#> 2 Atlanta Braves Atlanta Braves
#> 3 Baltimore Orioles Baltimore Orioles
#> 4 Boston Red Sox Boston Red Sox
#> 5 Chicago White Sox Chicago White Sox
#> 6 Chicago Cubs Chicago Cubs
#> 7 Cincinnati Reds Cincinnati Reds
#> 8 Cleveland Indians Cleveland Indians
#> 9 Colorado Rockies Colorado Rockies
#> 10 Detroit Tigers Detroit Tigers
#> # ... with 20 more rows
Создано в 2021-10-18 годах пакетом reprex (v2.0.1)
Комментарии:
1. Это не идеально, потому что иногда это Сент-Луис или Уайт Сокс, я не могу придумать правило, чтобы решить, какая часть принадлежит городу, а какая принадлежит талисману, я выбираю последнее слово, чтобы быть талисманом…
2. Если бы у вас был список названий городов, вы могли бы проверить данные на наличие названий городов и разбить их таким образом? ВОЗМОЖНО, НАМНОГО МЕДЛЕННЕЕ, но, может быть, это не слишком большое
3. Да, вы можете это сделать, я не думаю, что скорость имеет значение, в большинстве случаев это всегда будет глупо быстро до такой степени, что она может работать в 1000 раз медленнее
4. @Bruno Как быстро добавить запятые в конце каждой строки? Я не очень хорошо знаком с регулярными выражениями.