更改列值?

时间:2013-03-01 12:42:20

标签: r

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

这样做

2 个答案:

答案 0 :(得分:0)

我会使用查找表,即list,其中名称为数字1-5,列表内容为字母A-E:

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"

答案 1 :(得分: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"

将列值替换为最后一行的输出,并且您已全部设置。