Факторинг и подстроки - PullRequest
       2

Факторинг и подстроки

0 голосов
/ 20 марта 2020

Я попытался извлечь подстроку из столбца строк из набора данных, а затем попытался ее разложить на множители. Тем не менее, он все еще показывает повторение одной и той же категории, например, должна быть только одна категория Контейнеров, но есть несколько категорий Контейнеров.

Например, это одна из строк в столбце:

link=Storing and Release Orders > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);

и я хотел бы извлечь из строки часть Хранение и выпуск заказов .

Я пробовал что-то вроде этого:

mutate(category = str_sub(USERDATA, 6)) %>%

mutate(category = str_trim(str_replace(category, ">.*", "")))

и затем я хотел бы разложить этот столбец, но я получаю повторения той же категории.

Это образец набора данных, который я использую

1 Ответ

0 голосов
/ 20 марта 2020

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

Я попытался создать образец набора данных из вашего изображения:

library(dplyr)
library(stringr)

set.seed(1)
sample_data <- c(
  "link=Storing and Release Orders > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);",
  "link=Pregate Services > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);",
  "link=Delivery Order > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);",
  "link=Electronic Shipping Note > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);",
  "link=Vessel > Storing Order : Enquire;type=URL;url=https://wwwsg.portnet.com/SOROWeb/com/pn2/soro/web/EnquireSO/EnquireSOController.jpf;webenv=Internet (Secondary);"
)

df <- data.frame(
  USERDATA = sample(sample_data, 30, replace = TRUE)
)

Затем я использовал ваш тот же код и факторизовал переменную category, используя as.factor

cats <- df %>% 
  mutate(category = str_sub(USERDATA, 6)) %>%
  mutate(category = str_trim(str_replace(category, ">.*", ""))) %>% 
  mutate(category = as.factor(category))

, и я получил переменную factor с 5 уровнями (как и следовало ожидать)

cats$category
 [1] Storing and Release Orders Electronic Shipping Note   Storing and Release Orders Pregate Services           Vessel                     Delivery Order            
 [7] Pregate Services           Delivery Order             Delivery Order             Storing and Release Orders Vessel                     Vessel                    
[13] Pregate Services           Pregate Services           Storing and Release Orders Vessel                     Vessel                     Storing and Release Orders
[19] Storing and Release Orders Vessel                     Vessel                     Pregate Services           Pregate Services           Storing and Release Orders
[25] Electronic Shipping Note   Storing and Release Orders Electronic Shipping Note   Delivery Order             Pregate Services           Pregate Services          
Levels: Delivery Order Electronic Shipping Note Pregate Services Storing and Release Orders Vessel

nlevels(cats$category)
[1] 5

levels(cats$category)
[1] "Delivery Order"             "Electronic Shipping Note"   "Pregate Services"           "Storing and Release Orders" "Vessel"    

Так что все должно быть хорошо, в этом случае у меня есть factor длины 30 с 5 уровнями. Это то, что вы ожидаете?

...