Задача
Я пытаюсь использовать лучшую функциональность (цикл или вектор) для разбора большего списка на 26 (возможно, 27) меньших списков на основе каждой буквы алфавита (т.е. первый список содержит все записи большого списка, которые начинаются с буквой A второй список с буквой B ... возможный 27-й список содержит все оставшиеся записи, которые используют либо числа других символов).
Затем я пытаюсь идентифицировать, какие имена в списке похожи, используя функцию adist (например, мне нужно исправить названия компаний, которые написаны с ошибками. Например, компания A должна быть исправлена в компании A).
Код на данный момент
#creates a vector for all uniqueID/stakeholders whose name starts with "a" or "A"
stakeA <- grep("^[aA].*", uniqueID, value=TRUE)
#creates a distance matrix for all stakeholders whose name starts with "a" or "A"
stakeAdist <- (adist(stakeA), ignore.case=TRUE)
write.table(stakeAdist, "test.csv", quote=TRUE, sep = ",", row.names=stakeA, col.names=stakeA)
Объяснение
Я смог выполнить первый шаг своей задачи, используя приведенный выше код; Я создал список всех записей, начинающихся с буквы А, а затем рассчитал «расстояние» между каждой записью (отображается в матрице).
Спроси у одного
Я могу скопировать и вставить этот код 26 раз и перемещаться по алфавиту, но я полагаю, что это, вероятно, более элегантный способ сделать это, и я хотел бы изучить его!
Задайте два
Чтобы «исправить» записи, до сих пор я прибегал к написанию таблицы и переходу в Excel. В Excel я должен вставить запись строки, чтобы матрица правильно выровнялась (я полагаю, это небольшой недостаток в моем коде). Чтобы исправить записи, я использую условное форматирование, чтобы выделить все случаи, когда adist находится между 1 и 10, а затем мне нужно вручную пройтись по основным моментам и исправить списки.
Будет полезна любая помощь по функциям / методам для дальнейшей автоматизации этой / лучшей стратегии с использованием R.