У меня есть названия компаний, которые я скопировал в Интернете из различных источников. Некоторые сайты были неточными и отбрасывали «In c.», «In c», «Incorporated», «LTD», «LL C» и т. Д. c. Предположим, у меня есть только имена, Я просто хочу сократить список до приемлемого количества, чтобы я мог просмотреть его оттуда и внести коррективы. Мои реальные данные - 18 000 элементов, поэтому удаление неправильных, таких как Names [, - c (1,2342,17232)], нецелесообразно.
Вот пример:
Names = c("ABC Services", #drop
"ABC Services, Inc.",
"ABC Systems", #drop
"ABC Systems Co.",
"ABC Systems Incorporated",
"x Engineering, Inc.",
"x Engineering Incorporated", #drop
"x Green Energy Systems Inc.",
"XYZ & Electric",
"XYZ Development, Northwest, LLC",
"XYZ Enterprises", #drop
"XYZ Enterprises Inc",
"XYZ Generation",
"XYZ Systems", #drop
"XYZ Systems, Inc",
"XYZ Systems, LLC"
)
#count the number of words
WordCount = sapply(strsplit(Names, " "), length);
#subtract the first element, put NA at end to retain length
WordCountMinusFirstElement=c(WordCount[-1],NA);
#check consecutive modulo x_n+1 %% x_n, to remove pattern of non-increasing word pattern
#this just presents a vectorizable way to remove consecutive AND unique names
Consecutive = WordCountMinusFirstElement %% WordCount;
df=data.frame(Names,WordCount,WordCountMinusFirstElement,Consecutive);
"dimensions:";dim(df)
#as a principle I ought to keep my last row since my trick doesn't work here.
last = df[nrow(df),]
df = rbind.data.frame( df[which(!(df$Consecutive==0)),],last);
"dimensions:";dim(df)
Частые шаблоны: первые n символов, «In c.» vs ", Incorporated" и др. c. Я не могу отбросить «In c.», «In c», «Incorporated», «LTD», «LL C», «Co.» и т. Д. c., Потому что я ' они мне понадобятся, так что, похоже, я застрял в подсчете слов.
« Самая умная вещь », которую я могу придумать, - это НЕ рассматривать уникальные и последовательные слова с модулем оператор, например, x_{n+1} %% x_{n}=0
.
Я хотел бы знать, что, по мнению других, было бы эффективным способом двигаться дальше. Было бы лучше просто охарактеризовать тип «Incorporated», «LTD», «LL C», «Co.», et c. И удалить их из позиции последнего слова на этом этапе, и только go с unique(df$Name)
в этот момент? Лучше ли какой-нибудь рекурсивный поиск по строкам? Можно ли поместить это в dplyr, чтобы его было легко читать?
Спасибо!