为什么R中的重新编码不会改变原始值?

时间:2010-05-29 16:46:12

标签: r statistics

我正在尝试在R中使用recode(来自car包)并且它无效。我将.csv文件中的数据读入名为results的数据框中。然后,我根据以下逻辑替换列Built_year中的值。

recode(results$Built_year, 
       "2 ='1950s';3='1960s';4='1970s';5='1980s';6='1990s';7='2000 or later'")

在执行此步骤后检查results$Built_year时,它似乎有效。但是,它不存储此值,并返回其先前的值。我不明白为什么。

感谢。

(目前出现问题,我看不到任何格式化的图标)

2 个答案:

答案 0 :(得分:16)

您需要分配给新变量。

car

中的recode为例
R> x <- rep(1:3, 3)
R> x
[1] 1 2 3 1 2 3 1 2 3
R> newx <- recode(x, "c(1,2)='A'; else='B'")
R> newx
[1] "A" "A" "B" "A" "A" "B" "A" "A" "B"
R> 

顺便说一下,这个包被称为car,而不是汽车。

答案 1 :(得分:3)

car::recode(和R本身)不能用作SPSS Recode函数,因此如果对变量应用变换,则必须将其赋值给变量,如Dirk所说。我不使用car::recode,虽然它很简单......学习如何处理因素......我可以看到,你可以应用as.numeric(results$Built_year)并获得相同的效果。恕我直言,在这个庄园里使用car::recode是微不足道的。你只想把因子改成数字,对......好吧,当你看到它时,你会感到惊讶:

> x <- factor(letters[1:10])
> x
 [1] a b c d e f g h i j
Levels: a b c d e f g h i j
> mode(x)
 [1] "numeric"
> as.numeric(x)
 [1]  1  2  3  4  5  6  7  8  9 10

而且,男孩,我喜欢回答涉及因素的问题...... =)熟悉因素,你会在R中看到“重新编码”的魔力! =)Rob Kabacoff's site是一个很好的起点。