Wolfram mathematica 查找非装箱加权数据的频率

Wolfram mathematica 查找非装箱加权数据的频率,wolfram-mathematica,histogram,bin,Wolfram Mathematica,Histogram,Bin,这是一个棘手的问题(至少我认为是这样)。我需要创建一个柱状图,但是我没有数据和它的频率,而是有重复的数据(即未装箱)和每个数据的一些权重 一个例子: Angle | Weight 90 .... 3/10 93 .... 2/10 180 .... 2/10 180 .... 1/10 95 .... 2/10 我想创建一个大小为10的柱状图。y值应为范围内角度的加权频率之和。我怎么做?最好是Mathematica或伪

这是一个棘手的问题(至少我认为是这样)。我需要创建一个柱状图,但是我没有数据和它的频率,而是有重复的数据(即未装箱)和每个数据的一些权重

一个例子:

Angle  | Weight    
90   ....  3/10     
93   ....  2/10   
180  ....  2/10    
180  ....  1/10    
95   ....  2/10    

我想创建一个大小为10的柱状图。y值应为范围内角度的加权频率之和。我怎么做?最好是Mathematica或伪代码

最近,我对另一类问题做了类似的处理(按资产负债表规模加权)

假设您的数据位于N*2矩阵列表中,我会执行以下操作:

{numbers,weights} = {data[[All,1]], data[[All,2]]*10};

weightednumbers =       Flatten@ MapThread[
    Table[#1, {#2}] &, {numbers, Ceiling[weights]}];
然后使用
直方图
在转换后的数据上绘制直方图

可能还有其他方法,但这是可行的


重要的一点是确保权重是整数,因此
是正确的迭代器。这可能需要将
weights
定义为
data[[All,2]]*Min[data[[All,2]]]

,因为预期的输出不会出现,所以我将采用Verbeia的解释。您可以使用类似的方法:

dat = {{90, 3/10}, {93, 1/5}, {180, 1/5}, {180, 1/10}, {95, 1/5}};

bars =
 Reap[
   Sow[#2, Floor[#, 10]] & @@@ dat,
   _,
   {#, Tr@#2} &
 ][[2]]

Graphics[
  Rectangle[{#, 0}, {# + 10, #2}] & @@@ bars,
  AspectRatio -> 1/GoldenRatio,
  Axes -> True,
  AxesOrigin -> {Min@bars[[All, 1]], 0}
]
Histogram[WeightedData[{90, 93, 180, 180, 95}, {3/10, 2/10, 2/10, 1/10, 2/10}], {10}]

在Mathematica 9中,可以使用如下函数:

dat = {{90, 3/10}, {93, 1/5}, {180, 1/5}, {180, 1/10}, {95, 1/5}};

bars =
 Reap[
   Sow[#2, Floor[#, 10]] & @@@ dat,
   _,
   {#, Tr@#2} &
 ][[2]]

Graphics[
  Rectangle[{#, 0}, {# + 10, #2}] & @@@ bars,
  AspectRatio -> 1/GoldenRatio,
  Axes -> True,
  AxesOrigin -> {Min@bars[[All, 1]], 0}
]
Histogram[WeightedData[{90, 93, 180, 180, 95}, {3/10, 2/10, 2/10, 1/10, 2/10}], {10}]
然后你应该得到这样一个图形:


这似乎不清楚。什么是10-Y?使用您的示例数据,您希望如何将其装箱?@MikeHoneychurch我相信它们是独立的句子。将其理解为“…箱子大小10;Y值为…”。事实上,它应该是一个分隔符。请包含所给示例的预期输出。我认为您可能可以使用
GatherBy
,然后获取每个“bin”的点积,例如
bin1[[All,1]]。bin1[[All,2]]
WeightedData
似乎与
直方图
不兼容。输出似乎没有多大意义;例如,尝试
直方图[WeightedData[{1,3,1},{0,1,0}],{0,4,2}]
…@WillVousden我不明白你想要完成什么,WeigtheData就是为了这个问题,正如前面所说的那样。你能详细说明一下你希望完成什么吗?