对等深度或相等频率分级的小混淆
等深度分级表示 - 它将范围分为N个区间,每个区间包含大致相同数量的样本
让我们拿一小部分虹膜数据
res <- do.call(rbind,lapply(strsplit(mydf[,2], ','),
function(x) {
x1 <- unique(x)
data.frame(new.freq=length(x1), uniq.customer_sample_id=toString(x1))}))
res
#new.freq # uniq.customer_sample_id
#1 5 AMLM12001KP ( chr2 : chr9 ), 1028701 ( chr2 : chr9 ), 1220901 ( chr2 : chr9 ), AMLM12015WPS ( chr2 : chr9 ), AML203 ( chr2 : chr9 )
#2 3 AMLM12001KP ( chr2 : chr20 ), 1123801 ( chr2 : chr20 ), AMLM12020M-B ( chr2 : chr20 )
#3 2 #AMLM12001KP ( chr4 : chr17 ), 1031901 ( chr4 : chr17 )
如果我需要收集第一列,结果会是什么? 它是仅仅对数据进行分组还是包括一些计算,如等宽度分级。
如果要分箱的元素数量是奇数,会发生什么。我将如何平等地装箱?
答案 0 :(得分:1)
我将引导您完成unique(N)/bins > 0
的案例,其中N
表示要 binned 的数组中的值。假设
N = [1, 1, 1, 1, 1, 1,
2, 3, 4, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
bins = 4
此处length(N) = 20
和length(unique(N)) = 6
,unique(N)/bins = 1.5 > 0
。这意味着每个bin都会有大约1.5
个样本。因此,您将1
放入 bin1 中,将0.5个残基转移到下一个bin,使该bin中的元素数量为1.5 + 0.5 = 2
,因此2
并且3
将位于 bin2 中。推断这个逻辑,最终的箱子将进行以下拆分。当然[1], [2,3], [4], [5,6]
1
重复6次,6
重复10次。
我不希望 tie 坐在单独的箱子中,这通常是有箱子的点(分组值彼此接近)。
对于unique(N)/bins < 0
的情况,可以应用相同的逻辑。希望这能回答你的问题。
答案 1 :(得分:0)
有时你不能制作完全相同尺寸的垃圾箱。
例如,如果您的数据是
1,1,1,2,99
你需要4个箱子,那么最直观的结果应该是
[1,1,1], [2], [], [99]
大多数工具都会产生以下答案之一:
[1,1,1], [], [2], [99]
[1,1], [1], [2], [99]
[1], [1], [1], [2,99]
他们中没有一个在每个bin中都有1.25个元素。最后两个解决方案最接近,但也最不直观。这就是为什么人们只要求“大约相同的数字”。有时,没有一个好的解决方案确实具有这个频率。