Я пытаюсь разделить цифры и символы в столбце строк.До сих пор я использовал tidyr::separate
для этого, но я сталкиваюсь с ошибками для «необычных» случаев.
Предположим, у меня есть следующие данные
df <- data.frame(c1 = c("5.5K", "2M", "3.1", "M"))
И я хочу получить фрейм данных со столбцами
data.frame(c2 = c("5.5", "2", "3.1", NA),
c3 = c("K", "M", NA, "M))
До сих пор я использовал tidyr::separate
df %>%
separate(c1, into =c("c2", "c3"), sep = "(?<=[0-9])(?=[A-Za-z])")
Но это работает только для первых трех случаев.Я понимаю, что это потому, что ?<=...
и ?=...
требуют присутствия регулярного выражения.Как изменить этот код, чтобы зафиксировать случаи, когда перед буквами отсутствуют цифры?Я тоже пытался использовать функцию extract
, но безуспешно.
Редактировать: Полагаю, одним из решений было бы разбить это на
df$col2 <- as.numeric(str_extract(df$col1, "[0-9]+"))
df$col3 <- (str_extract(df$col1, "[aA-zZ]+"))
Но мне было любопытно, были ли другие способысправиться с этим.