我一直在使用这里的优秀答案查找具有数据表的组的众数。但是,我还想查找每组变量 y 的 x 模态值出现的次数。我怎样才能做到这一点?
编辑:有一种比上面链接的答案更快的方法来查找模式。我找不到从中得到的答案(如果有,请编辑并链接),但它使用此功能(并找到多种模式(如果存在):
MultipleMode <- function(x) {
ux <- unique(x)
tab <- tabulate(match(x, ux)); ux[tab == max(tab)]
}
这是一个当有两种模式时任意只采用第一种模式的版本:
SingleMode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
我现在使用它作为基本代码,从中编写一个函数来查找模式的频率,如下所示,而不是上面链接的答案。
您可以为每个组创建一个频率表,其中频率最高的模式(或任意选择的其中一种模式,如果有两个)位于顶部。然后,您可以使用该表的最大频率来查找模式出现的次数,使用以下函数和代码:
mod_count_fun <- function(x) max(table(x))
DT[,modal_count := mod_count_fun(x),by=y]
希望有帮助,自我!
编辑:
事实上,我找到了一种更快的方法来做到这一点。相反,使用:
SingleModeVal <- function(x) {
ux <- unique(x)
max(tabulate(match(x, ux)))
}
DT[,modal_count := SingleModeVal(x),by=y]
由于使用了表格和向量,这将比我之前的答案快大约 10 倍,并且基于我将在主帖中链接到的计算模式的巧妙方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)