【问题标题】:Testing which is greater but value changes测试哪个更大但值发生变化
【发布时间】:2021-01-26 04:15:32
【问题描述】:

我有一个数据集 df,我想在指标上测试它,有多少值大于测试阈值。例如对于A,我想测试有多少超过-1的阈值1,有多少超过-0.5的阈值2,1的阈值3和2的阈值4。问题是我的测试阈值对于每个A都不同,B 和 C。我应该如何循环它?

   df >
    A     B       C     
    1     5       2     
    2    12       3     
    3    -1       4    
    4     0       6    
    5    -9     -13    
    6    0.1      2     
    7    1        3     

测试阈值

 ID    value1 value2 value3 value4
 A         -1   -0.5    1      2  
 B          1    6      9     12  
 C          3    3.2    3.4    3.5

A 的期望输出

ID    value1 value2 value3 value4
A        7       7       6      5 

【问题讨论】:

    标签: r loops


    【解决方案1】:

    假设测试阈值存储在名为 test 的数据帧中,您可以将其按行拆分并使用 Map 查找每个 ID 的输出,有多少值大于每个阈值。

    Map(function(x, y) colSums(sapply(y, `<`, x)), df, asplit(test[-1], 1))
    
    #$A
    #value1 value2 value3 value4 
    #     7      7      6      5 
    
    #$B
    #value1 value2 value3 value4 
    #     2      1      1      0 
    
    #$C
    #value1 value2 value3 value4 
    #     2      2      2      2 
    

    【讨论】:

    • 我可以知道我的数据是否与测试的顺序不同,这也可以吗?例如,如果我的df是(A,C,B)而不是(A,B,C)。谢谢。
    • 在这种情况下,您可以将df 订购为test,方法是将答案中的df 替换为df[test$ID]
    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多