相关疑难解决方法(0)

帮我用"apply"函数替换for循环

......如果可能的话

我的任务是找到用户参与游戏的最长连续日.

我选择使用R的rle函数来获取最长的条纹,然后使用结果更新我的db表,而不是编写sql函数.

(附加的)数据框是这样的:

    day      user_id
2008/11/01    2001
2008/11/01    2002
2008/11/01    2003
2008/11/01    2004
2008/11/01    2005
2008/11/02    2001
2008/11/02    2005
2008/11/03    2001
2008/11/03    2003
2008/11/03    2004
2008/11/03    2005
2008/11/04    2001
2008/11/04    2003
2008/11/04    2004
2008/11/04    2005
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法来获得每个用户最长的条纹

# turn it to a contingency table
my_table <- table(user_id, day)

# get the streaks
rle_table <- apply(my_table,1,rle)

# verify the longest streak of "1"s for user 2001
# as.vector(tapply(rle_table$'2001'$lengths, rle_table$'2001'$values, max)["1"])

# loop to get the results
# initiate results matrix
res<-matrix(nrow=dim(my_table)[1], …
Run Code Online (Sandbox Code Playgroud)

loops for-loop r apply

4
推荐指数
2
解决办法
1万
查看次数

计算连胜的大小

我试图计算一个连胜的大小,这个问题是我在尝试计算条纹长度时的早期问题的后续跟进.

这就是我的数据:

> subRes
   Instrument TradeResult.Currency.
1         JPM                    -3
2         JPM                   264
3         JPM                   284
4         JPM                    69
5         JPM                   283
6         JPM                  -219
7         JPM                   -91
8         JPM                   165
9         JPM                   -35
10        JPM                  -294
11        KFT                    -8
12        KFT                   -48
13        KFT                   125
14        KFT                  -150
15        KFT                  -206
16        KFT                   107
17        KFT                   107
18        KFT                    56
19        KFT                   -26
20        KFT                   189
> dput(subRes)
structure(list(Instrument = structure(c(1L, 1L, 1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r function

4
推荐指数
1
解决办法
909
查看次数

标签 统计

r ×2

apply ×1

for-loop ×1

function ×1

loops ×1