当我使用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)]
但是,这种方法在那些值为数字格式的因子变量上运行良好。例如,如果我使用BranchNumber,而不是使用省,则值看起来像&#34; 1&#34;,&#34; 3&#34;,我得到了这样的输入,这很好:
您知道吗,为什么会发生这种情况以及如何解决问题?
答案 0 :(得分:1)
这可能是ifelse
的副作用,它有一种不可预测地改变其返回值类别的坏习惯。试试这个:
fact_data[ !( Province %in% df ), Province := "Other" ]
一般来说,我建议尽可能使用字符向量作为data.table列而不是因子。