Вот кадр данных Я работаю с:Преобразование кадра данных в числовой кадр данных в R
c1 = c('a', 'b', 'c', 'd')
c2 = c('d', 'a', 'd', 'c')
c3 = c('a', 'c', 'd', 'b')
c4 = c('a', 'c', 'b', 'd')
df = data.frame(c1, c2, c3, c4)
c1 c2 c3 c4
a d a a
b a c c
c d d b
d c b d
Я хотел бы преобразовать с помощью этой шкалы: а = 1, Ь = 2, с = 3, d = 4. Так что я получаю что-то вроде этого:
c1 c2 c3 c4
1 4 1 1
2 1 3 3
3 4 4 2
4 3 2 4
Это то, что я придумал:
for(i in colnames(df)){
df$i = gsub("a", 1, df$i)
df$i = gsub("b", 2, df$i)
df$i = gsub("c", 3, df$i)
df$i = gsub("d", 4, df$i)
}
Но это не работает. Должен ли я использовать gsub здесь, или есть более простой способ сделать это?
аналогично ответу ниже, если ваш ключ не был последовательным, вы можете сделать свой собственный 'ключ <- с («а»=«1»,«б '=' 2 ',' c '=' 3 ',' d '=' 4 '); df [] <- key [as.matrix (df)] ' – rawr