将数字转换为data.frame中的字母

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数字转换为data.frame中的字母相关的知识,希望对你有一定的参考价值。

在R中,我有一些数字矩阵,我将把每个数字转换成它的等价字母; 1到“a”,2到“b”,依此类推。

假设这是矩阵:

set.seed(1)
x <- data.frame(matrix(sample(1:16,12,T),nrow=3,ncol=4))
#  X1 X2 X3 X4
#1  5 15 16  1
#2  6  4 11  4
#3 10 15 11  3

这是预期的输出:

#  X1 X2 X3 X4
#1  e  o  p  a
#2  f  d  k  d
#3  j  o  k  c

我使用了letters[x]letters[list(x)],但它给了它

字母错误[list(x)]:无效的下标类型'list'

答案

使用sapply也是可能的:

sapply(x, function(i) letters[i])
#      X1  X2  X3  X4 
# [1,] "e" "o" "p" "a"
# [2,] "f" "d" "k" "d"
# [3,] "j" "o" "k" "c"
另一答案

将'x'转换为matrix后,将其用作内置letters的索引并将其分配给原始数据集

x[] <- letters[as.matrix(x)]
x
#   X1 X2 X3 X4
#1  e  o  p  a
#2  f  d  k  d
#3  j  o  k  c

或者这可以用tidyverse完成

library(dplyr)
x %>%
   mutate_all(funs(letters[.]))
另一答案

首先将数据帧转换为普通向量,然后将其用于下标letters。然后用该向量替换x的内容。通过使用replace我们可以避免覆盖原来的x

replace(x, TRUE, letters[unlist(x)])

赠送:

  X1 X2 X3 X4
1  e  o  p  a
2  f  d  k  d
3  j  o  k  c

以上是关于将数字转换为data.frame中的字母的主要内容,如果未能解决你的问题,请参考以下文章

如何将data.frame列从因子转换为数字[重复]

将作为列表的 data.frame 转换为完整但字符的 data.frame

将 R data.frame 强制转换为 nz.data.frame 时出错

将 data.frame 中的列转换为日期

如何用(data.frame)查找表中的值标签替换数据框中的数字代码?

将 data.frame 列转换为向量?