#error-message #nps #customer-feedback #satisfaction-rating #survey-analysis

net_promoter_score

一个从调查响应中计算净推荐分数(NPS)的crate

4个版本

0.2.1 2023年6月24日
0.2.0 2023年6月23日
0.1.1 2023年6月23日
0.1.0 2023年6月23日

#338 in 数学

MIT/Apache

50KB
578

净推荐分数(NPS®)

Crates.io build and test Documentation License: MIT

《code>net_promoter_score crate 是一个Rust库,用于处理和计算从调查响应中得出的净推荐分数(NPS)。该库高度可定制,使得与不同受访者ID类型和评分范围工作变得容易。它包括添加单个和多个响应、批量响应和自动生成唯一受访者ID的方法。此外,该crate高效地处理边缘情况,并提供详细的错误信息,以确保您的应用程序稳健且准确。

功能

  • 从调查响应中计算NPS
  • 支持自定义受访者ID类型
  • 详细的错误信息
  • 高效性能
  • 清晰易懂的示例
  • 自动生成唯一的受访者ID(适用于 i32 标识符)

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
net_promoter_score = "0.2.1"

示例用法

创建调查并添加响应

要创建新的调查并添加单个响应,可以使用以下代码

use net_promoter_score::prelude::*;
use anyhow::Result;

fn main() -> Result<()> {
    let mut survey = Survey::new();

    survey.add_response(1, 9)?;
    survey.add_response(2, 8)?;
    survey.add_response(3, 6)?;

    let nps = survey.score();
    println!("The calculated NPS is: {}", nps);

    Ok(())
}

一次添加多个响应可以使用 add_multiple_responses 实现,如下所示

use net_promoter_score::prelude::*;
use anyhow::Result;

fn main() -> Result<(), Vec<NetPromoterScoreError>> {
    let mut survey = Survey::new();

    survey.add_multiple_responses(vec![(1, 9), (2, 8), (3, 6)])?;

    let nps = survey.score();
    println!("The calculated NPS is: {}", nps);

    Ok(())
}

添加带有自动生成的i32类型受访者ID的批量响应

use net_promoter_score::prelude::*;
use anyhow::Result;

fn main() -> Result<(), Vec<NetPromoterScoreError>> {
    let rating_quantities: &[(NpsRating, ScoreCount)] = &[
        (1, 2),
        (4, 1),
        (5, 2),
        (7, 8),
        (8, 10),
        (10, 10),
    ];
    let mut survey = Survey::new();
    survey.add_bulk_responses_auto_id(&rating_quantities)?;

    let nps = survey.score();
    println!("The calculated NPS is: {}", nps);

    Ok(())
}

以下示例使用 &str 作为调查的受访者ID类型

use net_promoter_score::prelude::*;
use anyhow::Result;

fn main() -> Result<()> {
    // Create a new survey with &str respondent IDs
    let mut survey: Survey<&str> = Survey::new();

    // Adding responses with string slice respondent IDs
    survey.add_response("customer_1", 9)?;
    survey.add_response("customer_2", 8)?;
    survey.add_response("customer_3", 6)?;

    // Calculate the NPS
    let nps = survey.score();
    println!("The calculated NPS is: {}", nps);

    Ok(())
}

想要对ID的生成有更多控制权?

以下示例使用受访者ID生成函数和自定义 String 受访者ID

use net_promoter_score::prelude::*;
use anyhow::Result;

fn main() -> Result<(), Vec<NetPromoterScoreError>> {
    let rating_quantities: &[(NpsRating, ScoreCount)] = &[
        (1, 2),
        (4, 1),
        (5, 2),
        (7, 8),
        (8, 10),
        (10, 10),
    ];

    let mut survey: Survey<String> = Survey::new();

    let mut respondent_id_number = 1;
    let respondent_id_fn = || {
        let current_id = format!("customer_{}", respondent_id_number);
        respondent_id_number += 1;
        current_id
    };

    survey.add_bulk_responses(respondent_id_fn, rating_quantities)?;

    let nps = survey.score();
    println!("The calculated NPS is: {}", nps);

    Ok(())
}

在本例中,我们首先定义包含每个评分的NPS评分和相应计数的rating_quantities。我们使用String作为受访者ID类型创建一个新的Survey。接下来,我们创建一个受访者ID生成函数respondent_id_fn,该函数生成格式为"customer_{number}"的唯一自定义String受访者ID。

最后,我们使用生成函数和评分数量调用add_bulk_responses,将具有唯一受访者ID的响应添加到调查中。计算出的NPS将打印到控制台。

有关具体细节和更多高级用法,请参阅crate文档和源代码。

API概述

crate提供的主要类型是Survey结构。Survey包括添加响应和计算NPS的方法

  • new():创建一个新的空调查。
  • add_response(respondent_id: T, score: u8):添加单个调查响应,包括给定的受访者ID和分数。
  • add_multiple_responses(responses: impl IntoIterator<Item = (T, u8)>):添加多个调查响应。
  • add_bulk_responses(respondent_id_fn: F, quantities: &[(u8, usize)]):使用受访者ID生成函数和元组切片(评分,数量)添加批量调查响应。
  • add_bulk_responses_auto_id(quantities: &[(u8, usize)]):使用自动生成的唯一受访者ID添加批量调查响应,ID类型为i32,从1开始(针对ID类型为i32的特殊实现)。
  • from_responses(responses: impl IntoIterator<Item = (T, u8)>):从一组响应创建一个新的调查。如果有任何响应的评分无效,将返回错误。
  • score():计算并返回调查的净推荐值(NPS)。

反馈和建议

我非常感谢任何关于改进此crate的反馈和建议。如果您想直接为项目做出贡献,请随时创建问题提交pull request

许可协议

这个软件包是自由软件:您可以在MIT许可证的条款下重新分发和/或修改它。MIT 许可证。

Net Promoter®、NPS®、NPS Prism®以及与NPS相关的表情符号是Bain & Company, Inc.、NICE Systems, Inc.和Fred Reichheld的注册商标。Net Promoter Score和Net Promoter System是Bain & Company, Inc.、NICE Systems, Inc.和Fred Reichheld的服务商标。


喜欢这个软件包吗?

⭐ 星 https://github.com/rrrodzilla/net_promoter_score

🐦 跟随 https://twitter.com/rrrodzilla


readme由cargo-markdown创建

无运行时依赖