2013-03-01 142 views
0

我有一个5列的表。第三列包含1-5的数字。我想用1 = A,2 = D,3 = X和4 = U和5 = K的字母替换数字。我如何在R中这样做?更改列值?

回答

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" 
+0

非常感谢....! – Kisun 2013-03-01 14:15:06

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" 

与最后一行的输出替换列值,而你所有的设置。