我不太确定我是否可以在SuperUser,
上提出这个问题我想知道如何在excel中绘制输出的CDF图表。
我的数据是这样的(我的真实数据有22424条记录):
1 2.39E-05
1 2.39E-05
1 2.39E-05
2 4.77E-05
2 4.77E-05
2 4.77E-05
4 9.55E-05
4 9.55E-05
4 9.55E-05
4 9.55E-05
4 9.55E-05
4 9.55E-05
8 0.000190931
8 0.000190931
答案 0 :(得分:5)
您可以使用NORMDIST
函数并将最终参数设置为true:
例如,假设我有20个数据点,从0.1到2.0,增量为0.1,即0.1,0.2,0.3 ...... 2.0。
现在假设该数据集的平均值为1.0,标准偏差为0.2。
要获得CDF图,我可以为每个值使用以下公式:
=NORMDIST(x, 1.0, 0.2, TRUE) -- where x is 0.1, 0.2, 0.3...2.0
要从数据中删除重复的条目,并使用相同的和值,您可以使用以下代码。
ALT + F11
打开VBE Insert > Module
将模块放入编辑器RemoveDuplicates
的任意位置,然后按F5
运行代码因此,您的唯一总结结果将显示在工作簿中的Sheet2中。
Sub RemoveDuplicates()
Dim rng As Range
Set rng = Range("A1:B" & GetLastRow(Range("A1")))
rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets("Sheet2").Range("A1"), Unique:=True
Dim filteredRng As Range
Dim cl As Range
Set filteredRng = Worksheets("Sheet2").Range("A1:A" & GetLastRow(Worksheets("Sheet2").Range("A1")))
For Each cl In filteredRng
cl.Offset(0, 1) = Application.WorksheetFunction.SumIf(rng.Columns(1), cl.Value, rng.Columns(2))
Next cl
End Sub
Function GetLastRow(rng As Range) As Long
GetLastRow = rng.End(xlDown).Row
End Function
答案 1 :(得分:4)
让我们看看我是否理解你的问题。假设Excel 2007及以上。假设您的数据位于A列和B列。
第1步
在单元格C1中使用此公式:
=B1*COUNTIF(A:A,A1)
这个公式在单元格D1中:
=SUM($C$1:C1)
并将两个公式复制到数据末尾。
第2步
选择四列 在功能区数据中选择 - >删除重复项 取消选中B,C和D列
第3步
选择A栏和D栏。 在Ribbon Insert-> Scatter-> Line
中选择这是你想要实现的吗?
HTH!
答案 2 :(得分:4)
这个答案是如何创建一个经验分布函数,这是许多人在说CDF时真正想到的(包括我自己)... https://en.wikipedia.org/wiki/Empirical_distribution_function
假设样本数据的第二列在单元格B1中开始,在单元格C1中键入:
=SUM(IF($B$1:$B$14<=B1,1,0))/COUNT($B$1:$B$14)
然后按Shift + Enter,将其作为数组公式输入。它现在在公式栏中显示如下:
{=SUM(IF($B$1:$B$14<=B1,1,0))/COUNT($B$1:$B$14)}
将细胞复制到封面C1:C14。然后制作散点图,其中B1:B14为X,C1:C14为Y.它将显示四个点。