如何使用Qt计算表中值的频率

Posted

技术标签:

【中文标题】如何使用Qt计算表中值的频率【英文标题】:how to calculate a frequency of a value in a table using Qt 【发布时间】:2018-07-24 11:16:33 【问题描述】:

通常在我的表上我有这些值 (0,0,80,0,0,0,80,80,80,40) 这个表被命名为 qvValues ,我想在频率表上 (5,4 ,1)

#include<QDebug>
#include <QList>
QList<double> frequencies;
QList<double> qvValues;
for(int i=0;i<qvValues.size();i++)


            frequencies.append(qvValues.count( qvValues[i]));



qDebug() << frequencies;

【问题讨论】:

请举例输入输出。 只需使用QMap&lt;double, int&gt;。你只需要一个“for”循环。 您的问题与Qt有关,还是与频率表的创建有关?我假设是后者,因为您显示的代码实际上没有任何特定于 Qt 的内容(frequence 是 Qt 容器?)。我建议你创建一个非 GUI 的 MCVE 程序,它生成并打印表格,并解释它是如何工作的错误(显示它的作用,与它应该做什么相比)。 例如,我在 qvValues 中有这些值:0 0 2 1 1,频率表应该有 2 1 2、2 of 0、1 of 2 和 2 of 1,频率是包含出现次数的表@John Zwinck 我看不出这个问题与 Qt 有什么关系。也很难理解你想要什么。您发布了代码,但您能描述一下它有什么问题吗?您想做什么?您的代码在哪些方面没有按预期运行? 【参考方案1】:

这些值来自您的示例(评论)。

#include <QMap>
#include <QList>
#include <QDebug>

int main(int argc, char *argv[])

    QList<int> values;
    QMap<int, int> frequencies;

    values << 0 << 0 << 80 << 0 << 0 << 0 << 80 << 80 << 80 << 40;

    int value;

    foreach ( value, values )
    
        if ( !frequencies.contains( value ) )
        
            frequencies.insert( value, values.count( value ) );
            qDebug() << "Value: " << value << " Frequency: " << values.count( value );
        
    

    return 0;

【讨论】:

【参考方案2】:

使用QList 类来存储您的qvValues。您可以使用单个for 循环和int QList::count( const T&amp; value ) 来计算每个值的频率。

【讨论】:

您能否澄清一下这个想法,例如我有 qvValues[0]=1 和 qvValues[1]=1 ,如果我这样做 for (int i=0; i QList&lt;int&gt; values; QList&lt;int&gt; frequencies; values &lt;&lt; 0 &lt;&lt; 0 &lt;&lt; 2 &lt;&lt; 1 &lt;&lt; 1; for ( int i = 0; i &lt; values.size(); i++ ) frequencies.append( values.count( values[ i ] ); 通常我的值是 (0, 0, 80, 0, 0, 0, 80, 80, 80, 40) 和你的代码它给了我 (5, 5, 4, 5 , 5, 5, 4, 4, 4, 1) ,目的是作为结果(5.4.1) 你能帮帮我吗 @Oumaima Sh,将解决方案放在答案中以清楚地看到代码

以上是关于如何使用Qt计算表中值的频率的主要内容,如果未能解决你的问题,请参考以下文章

获取大型 MySql 表中值频率分布的有效方法

是否有一个 SQL 命令来计算不同列中值的频率?

如何使用linq获取表中值的计数

pandas DataFrame 列中值的计数频率

如何计算 SQLite 中值的中位数?

如何计算同一列中值的天差?