我是新用户,在尝试重命名列中的某些记录时遇到一些困难。
我的数据包含名为classcode和fish_tl的列。 Classcode是一个字符值,fish_tl是数字。
当classcode ='OCAL'和fish_tl <20时,我需要重命名该类代码的值,使其现在为“OCALYOY”。我不想更改类代码中的任何其他记录。
我正在运行以下代码:
data$classcode<-ifelse(data$classcode=='OCAL'& data$fish_tl<20,
'OCALYOY',data$classcode)
我的问题似乎与“else”方面有关:代码运行正常,并按预期返回'OCALYOY',但是类代码的其他值现在已经转换为数字(尽管当我看到它的模式时)字段,它仍然以“字符”的形式返回。)
我做错了什么? 非常感谢!
答案 0 :(得分:0)
您可以将else部分as.character(data$classcode)
。 ifelse
对于参数的类有一些奇怪的语义,它将你的因素转化为它的基础数字表示。 as.character
会将其保留为字符值。
答案 1 :(得分: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()
的输出添加到您的问题而不是文字表示中来提出问题reproducible吗?