c#中的excel percentrank算法是什么?

c#中的excel percentrank算法是什么?,c#,excel,C#,Excel,根据图片,我想在我的c#项目中使用excel percentrant函数。解决方案是什么?您可以使用互操作库。但如果是这样,则应小心使用,因为如果存在漏洞或内存泄漏,则可能会导致除盐水。这是因为您需要调用并创建一个单独的流程来完成您的工作。特别不建议使用ASP.net 下面是一篇关于如何做的好文章 基于: 私有静态双百分比秩(列表矩阵,双值) { matrix.Sort(); 对于(int i=0;i


根据图片,我想在我的c#项目中使用excel percentrant函数。解决方案是什么?

您可以使用互操作库。但如果是这样,则应小心使用,因为如果存在漏洞或内存泄漏,则可能会导致除盐水。这是因为您需要调用并创建一个单独的流程来完成您的工作。特别不建议使用ASP.net

下面是一篇关于如何做的好文章

基于:

私有静态双百分比秩(列表矩阵,双值)
{
matrix.Sort();
对于(int i=0;i
JavaScript中的示例实现(匹配来自的结果)

function percentrank(x,vec){
var s=0;
var b=0;
对于(变量k=0;k
用法:

百分比等级(2、[13、12、11、8、4、3、2、1、1、1])


请展示一些代码,让我们知道您正在尝试的东西出了什么问题。如果你不想自己实现它,看看这里:我不知道,所以我不能开始写旧线程,但我需要这个,这个答案是不正确的。有关Excel文档上的值5,请参见示例=PERCENTRANK(A2:A11,5)A2:A11范围内5的百分比等级。与上面的示例不同,在该范围内找不到5。PERCENTRANK为5的计算方法是在PERCENTRANK为4和PERCENTRANK为8之间找到四分之一的分数。这是(0.555)+(0.25*(0.666-0.555)),或0.583。0.583@X.L.Ant的答案是正确的
private static double PercentRank(List<double> matrix, double value)
{
    matrix.Sort();

    for (int i = 0; i < matrix.Count; i++)
        if (matrix[i] == value)
            return ((double)i) / (matrix.Count - 1);

    // calculate value using linear interpolation
    double x1, x2, y1, y2;

    for (int i = 0; i < matrix.Count - 1; i++)
    {
        if (matrix[i] < value && value < matrix[i + 1])
        {
            x1 = matrix[i];
            x2 = matrix[i + 1];
            y1 = PercentRank(matrix, x1);
            y2 = PercentRank(matrix, x2);

            return (((x2 - value) * y1 + (value - x1) * y2)) / (x2 - x1);
        }
    }

    throw new Exception("Out of bounds");
}
function percentrank(x, vec) {
    var s = 0;
    var b = 0;
    for (var k = 0; k < vec.length; k++) {
       if (vec[k] < x) {
           s += 1;
       } else {
           b += 1;
       }
    }
    return s/(s+b-1);
}