2

我是一个新的 R 用户,在尝试重命名列中的某些记录时遇到了一些困难。

我的数据有名为 classcode 和 fish_tl 的列,等等。Classcode 是一个字符值,fish_tl 是数字。

当 classcode='OCAL' 且 fish_tl<20 时,我需要重命名 classcode 的值,使其现在为“OCALYOY”。我不想更改类代码中的任何其他记录。

我正在运行以下代码:

data$classcode<-ifelse(data$classcode=='OCAL'& data$fish_tl<20,
                              'OCALYOY',data$classcode)

我的问题似乎与“其他”方面有关:代码运行良好,并按预期返回“OCALYOY”,但类代码的其他值现在已转换为数字(尽管当我查看该字段的模式时,它仍然作为“字符”返回)。

我究竟做错了什么?非常感谢!

4

2 回答 2

0

尽管您指出 R 认为这是性格问题,但您可能会陷入因素与性格问题。无论如何,环绕as.character()您的代码似乎可以解决我的问题:

> ifelse(data$classcode=='OCAL'& data$fish_tl<20,
+        'OCALYOY',as.character(data$classcode))
#-----
 [1] "BFRE"    "BFRE"    "BFRE"    "HARG"    "OCALYOY" "OYT"     "OYT"     "PFUR"   
 [9] "SPAU"    "BFRE"    "OCALYOY" "OCAL" 

如果不是这样,您能否通过将输出添加到您的问题而不是文本表示来使您的问题可重现?dput()

于 2012-10-08T21:41:33.597 回答
0

您可以制作 else 部分as.character(data$classcode)ifelse关于参数的类有一些奇怪的语义,它把你的因素变成了它的底层数字表示。 as.character将其保留为字符值。

于 2012-10-08T21:39:43.043 回答