我正在尝试在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
时,它似乎有效。但是,它不存储此值,并返回其先前的值。我不明白为什么。
感谢。
(目前出现问题,我看不到任何格式化的图标)
答案 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是一个很好的起点。