我有一个多个数据帧的列表,每个数据帧包含一串日期,对于每个日期,+1表示增加或-1表示减少.
这是一个例子
security1 <- data.frame(
date = seq(from =as.Date('2019-01-01'), to = as.Date('2019-01-10'), by = 'day'),
direction = c(1, 1, 1, -1, -1, 1, 1, 1, 1, -1))
security2 <- data.frame(
date = seq(from =as.Date('2019-01-01'), to = as.Date('2019-01-10'), by = 'day'),
direction = c(1, -1, 1, -1, -1, 1, 1,- 1, 1, -1))
clcn <- list(Sec1 = security1, Sec2 = security2)
Run Code Online (Sandbox Code Playgroud)
对于每个数据帧,我试图找到最近一串更改的长度,以及上次数字大于此时的长度.如果前一天的移动是另一个方向,那么目前的连胜可能只是1天.
我已经搜索了几天的答案,并在数据框中的Compute计数变量中找到了以下使用序列和rle的单个数据帧
sequence(rle(as.character(data$list))$lengths)
Run Code Online (Sandbox Code Playgroud)
但我正在努力将其提供给lapply或map以使其迭代列表.
我不介意确切的输出,但理想情况下它包括:数据帧名称,当前条纹,前一个条纹更长,以及条纹结束的日期.但在最基本的情况下,只需将序列号添加为数据框中的新列将是一个巨大的帮助,我可以(尝试)从那里获取它.