0

我有一个有 5 列的表。第 3 列包含 1-5 的数字。我想用 1=A、2=D、3=X 和 4=U 和 5=K 的字母替换数字。我怎么能在 R 中这样做?

4

2 回答 2

0

我会使用查找表,即list名称是数字 1-5,列表的内容是字母 AE:

lut = list('A', 'B', 'C', 'D', 'E')
names(lut) = 1:5
sample_data = sample(1:5, 10, replace = TRUE)
as.character(lut[as.character(sample_data)])

> lut
$`1`
[1] "A"

$`2`
[1] "B"

$`3`
[1] "C"

$`4`
[1] "D"

$`5`
[1] "E"

> sample_data
 [1] 3 5 2 5 1 4 2 2 3 3
> as.character(lut[as.character(sample_data)])
 [1] "C" "E" "B" "E" "A" "D" "B" "B" "C" "C"
于 2013-03-01T12:50:08.983 回答
0

这可能比保罗的回答更容易理解(恕我直言,这是一种更好的方法)。

创建一个小数据框,它本质上是一个查找表。然后,我让bar你的数组中感兴趣的列,

Rgames> foo
$lets
[1] "A" "D" "X" "U" "K"

$nums
[1] 1 2 3 4 5

Rgames> rab<-foo$lets[bar]
Rgames> rab
[1] "A" "A" "X" "D" "K"
Rgames> foo
$lets
[1] "A" "D" "X" "U" "K"

$nums
[1] 1 2 3 4 5

Rgames> bar
[1] 1 1 3 2 5
Rgames> foo$lets[bar]
[1] "A" "A" "X" "D" "K"

用最后一行的输出替换列值,一切就绪。

于 2013-03-01T13:59:02.283 回答