创建一个列,计算另一列中相似数字之间的距离

时间:2014-01-23 16:32:47

标签: r excel

好的,我知道这个标题可能令人困惑。对于那个很抱歉。自2008年以来,我通过绘制和运行有一个带有彩票累积奖金的数据框。我想创建一个新的列来计算绘制数量,因为该绘制的jp值具有相似的值(要么完全相同,要么更好,在10%以内)。

所以,我有

run draw   jp
74      1     15
74      2     20
74      3     25
75      1     15
75      2     20
76      1     15
76      2     20
76      3     26

并且想知道当跑76时,画3击中26,自从类似的jp以来已经有5次抽牌。对于每一次观察都是如此。

因此,数据最终看起来像:

run draw   jp    draws sincelikejp
74      1     15    na
74      2     20    na
74      3     25    na
75      1     15    3
75      2     20    3
76      1     15    2
76      2     20    2
76      3     26    5

有什么想法?

1 个答案:

答案 0 :(得分:2)

DF <- read.table(text="run draw   jp
74      1     15
74      2     20
74      3     25
75      1     15
75      2     20
76      1     15
76      2     20
76      3     26", header=TRUE)

tmp <- outer(DF$jp, DF$jp, function(a, b) abs(b-a)/b)
tmp[lower.tri(tmp)] <- NA
DF$since <- apply(tmp, 2, function(x) {
                    res <- diff(tail(which(x < 0.1), 2))
                    if (length(res) == 0) return(NA) else return(res)
                    })
#   run draw jp since
# 1  74    1 15    NA
# 2  74    2 20    NA
# 3  74    3 25    NA
# 4  75    1 15     3
# 5  75    2 20     3
# 6  76    1 15     2
# 7  76    2 20     2
# 8  76    3 26     5