Изменить значения столбца на основе условия в R - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть столбец во фрейме данных, который имеет шесть уровней A1, A2, B3, B4, C5, C6 и тысячи строк.

colname  
 A1  
 A2  
 B3  
 B4  
 A2  
 C5  
 C6 
 B4

Мне нужно перекодировать от A1 до C6 от 1 до 7. Как бы я это сделал, не повторяя это:

df$colname["A1"] <- 0
df$colname["A2"] <- 2

Есть ли более элегантный способ сделать это?

1 Ответ

0 голосов
/ 28 февраля 2020

Предполагая, что ваш столбец является фактором, мы можем просто обновить уровни. (Если это не фактор, вы можете легко привести его к одному). Этот код просто извлекает числовой c компонент уровня с помощью регулярного выражения.

df <- data.frame(col = factor(c("A1", "A2", "B3", "B4", "A2", "C5", "C6", "B4")))

levels(df$col) <- stringr::str_extract(levels(df$col), "\\d")

df

#   col
# 1   1
# 2   2
# 3   3
# 4   4
# 5   2
# 6   5
# 7   6
# 8   4
...