R ifelse将因子值更改为索引

时间:2016-10-04 01:37:07

标签: r data.table categorical-data

当我使用R时,我遇到了一个奇怪的问题,我使用data.table:

在这里,当我尝试将这些省的数量转换为500以下"其他"时,输出会将最高统计省份变为索引号

df <- fact_data[,.N,Province][N >= 500]$Province
df
fact_data[,Province := ifelse(Province %in% df, fact_data$Province, "Other")]
fact_data[,.N,Province][order(-N)]

输出: p1

但是,这种方法在那些值为数字格式的因子变量上运行良好。例如,如果我使用BranchNumber,而不是使用省,则值看起来像&#34; 1&#34;,&#34; 3&#34;,我得到了这样的输入,这很好:

p2

您知道吗,为什么会发生这种情况以及如何解决问题?

1 个答案:

答案 0 :(得分:1)

这可能是ifelse的副作用,它有一种不可预测地改变其返回值类别的坏习惯。试试这个:

fact_data[ !( Province %in% df ), Province := "Other" ] 

一般来说,我建议尽可能使用字符向量作为data.table列而不是因子。