我有一个如下所示的数据框:
dat <- data.frame(T1 = c('s', 's', 'm', 'l', 'm', 'xl'),
T2 = c('s', 's', 'm', 'l', 'm', 'xl'),
T3 = c('m', 's', 'm', 'l', 'l', 'xxl'),
T4 = c('m', 'm', 'm', 'l', 'l', 'xxl'),
T5 = c('m', 'm', 'm', 'xl', 'l', 'xl'))
现在,我想将这些字符转换成数字(1-5)。有没有什么方法可以在几行中为整个数据框做到这一点。如果我必须为每一列和每个字符使用 ifelse() 语句,我会用掉很多行。提前谢谢你。
最佳答案
使用匹配
:
dat[] <- match(unlist(dat), unique(unlist(dat)))
T1 T2 T3 T4 T5
1 1 1 2 2 2
2 1 1 1 2 2
3 2 2 2 2 2
4 3 3 3 3 4
5 2 2 3 3 3
6 4 4 5 5 4
https://stackoverflow.com/questions/74374999/