如果给定变量有多个级别,如何快速检查?

时间:2015-12-27 17:35:25

标签: r data.table

我编写了一个脚本,可以帮助验证结构并对非常大的data.tables进行基本的描述性统计。我需要有一个快速的方法来判断一个给定的变量是否超过 - 比如 - 50个独特的水平。

我可以通过

来做
function(DT, colnr)
{
    b<-DT[, list(var=colnames(DT)[[colnr]],.N), by = list(level=DT[[colnr]])]
    if(nrow(b)<50) 
        #less than 50 levels, probably we need a dictionary.
        setorder(b, level)
        b
    else
        #more than 50 levels. Just return the number of unique values.
        data.table(level=NA, var=colnames(DT)[[colnr]], N=-nrow(b))
}

但是DT[, list(var=colnames(DT)[[colnr]],.N), by = list(level=DT[[colnr]])]对于具有尽可能多的唯一值的变量需要很长时间(我在DT中有超过400万个案例)

有没有办法改善表现?如果有超过50个,我不需要计算唯一案例的数量。返回&#34;超过50&#34;就够了

0 个答案:

没有答案