Скажем, датафрейм называется df
, тогда вы можете использовать:
length(unique(toupper(gsub("[^a-zA-Z]", "", df$Color))))
Объяснение:
gsub("[^a-zA-Z]", "", df$Color)
удаляет все, что не является символом. Таким образом, у вас остаются только цвета.
toupper
делает капитализированный оставшийся текст, а уникальный удаляет дубликаты. length
дает вам количество элементов в векторе. Вы получите 5
.
Сложение : Чтобы обработать регистр "Red, 1A", вы можете удалить все после ',' и затем использовать вышеуказанное решение. Например:
x <- gsub(",.*$", "", df$Color) ## removes a comma and anything that follows
length(unique(toupper(gsub("[^a-zA-Z]", "", x)))) ## removes all but letters
Альтернатива для удаления всего после запятой: вы можете удалить любую буквенную цифру, такую как "1A "или" A1 "с:
x <- gsub("[a-zA-Z]*[0-9][a-zA-Z]*", "", df$Color)