查找次小值 [英] Finding the second smallest value

查看:12
本文介绍了查找次小值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于每个观测值,我希望获得变量的最后五个观测值中的第二个最小值。

您知道我必须使用哪个命令吗?

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str5 var1 str26 var2 
"Value" "2nd smallest of previous 5" 
"8" "" 
"0" "" 
"4" "" 
"5" "" 
"0" "" 
"6" "0" 
"8" "0" 
"10" "4" 
"8" "5" 
"8" "6" 
end 

推荐答案

原始问题:最后5个中的第2个

另一种方法是将5个中的倒数第二个作为较低的四分位数返回:

. sysuse auto, clear
(1978 Automobile Data)

. quietly su mpg in -5/L , detail

. di r(p25)
23

修改后的问题:前5个问题中的第2个

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input data min2f5 
8 . 
0 . 
4 . 
5 . 
0 . 
6 0 
8 0 
10 4 
8 5 
8 6 
end 

mata:  
    mata clear

    real second(real colvector X) {
        if (rows(X) < 5) return(.) 
        X = sort(X, 1)    
        return(X[2])
    }

end 

gen long id = _n 
* install just once 
ssc inst rangestat 
rangestat (second) data, interval(id -5 -1)

list 

     +------------------------------+
     | data   min2f5   id   second1 |
     |------------------------------|
  1. |    8        .    1         . |
  2. |    0        .    2         . |
  3. |    4        .    3         . |
  4. |    5        .    4         . |
  5. |    0        .    5         . |
     |------------------------------|
  6. |    6        0    6         0 |
  7. |    8        0    7         0 |
  8. |   10        4    8         4 |
  9. |    8        5    9         5 |
 10. |    8        6   10         6 |
     +------------------------------+

这篇关于查找次小值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆