r - 列表中每个数据帧的最长更改运行时间

标签 r list dataframe

我有一个包含多个数据框的列表,每个数据框都包含一串日期,对于每个日期,+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)

对于每个数据帧,我试图找到最近的更改字符串的长度,以及上次数字大于这个的长度。如果前一天的走势是相反的,那么当前的连胜可能只是 1 天。

我已经搜索了几天的答案,并在 Compute counting variable in dataframe 找到了以下使用序列和 rle 来处理单个数据帧的方法
sequence(rle(as.character(data$list))$lengths)

但我正在努力将其输入 lapply 或 map 以使其遍历列表。

我不介意确切的输出,但理想情况下它包括:
数据框名称、当前连续记录、之前更长的连续记录以及该连续记录结束的日期。
但在最基本的情况下,只需将序列号添加为数据帧上的新列就会有很大帮助,我可以(尝试)从那里获取它。

最佳答案

@akrun 有正确的想法,但既然你说添加到 data.frame,也许:

library(tidyverse)

clcn %>%
  map(~ mutate(., streak = sequence(rle(direction)$lengths)))

$`Sec1`
         date direction streak
1  2019-01-01         1      1
2  2019-01-02         1      2
3  2019-01-03         1      3
4  2019-01-04        -1      1
5  2019-01-05        -1      2
6  2019-01-06         1      1
7  2019-01-07         1      2
8  2019-01-08         1      3
9  2019-01-09         1      4
10 2019-01-10        -1      1

$Sec2
         date direction streak
1  2019-01-01         1      1
2  2019-01-02        -1      1
3  2019-01-03         1      1
4  2019-01-04        -1      1
5  2019-01-05        -1      2
6  2019-01-06         1      1
7  2019-01-07         1      2
8  2019-01-08        -1      1
9  2019-01-09         1      1
10 2019-01-10        -1      1

从那里,你可以做更多 mutate调用/添加,例如:
clcn %>%
  map(
    ~ mutate(
      ., 
      streak = sequence(rle(direction)$lengths), 
      max_streak = streak == max(streak)
    )
  )

关于r - 列表中每个数据帧的最长更改运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750509/

相关文章:

r - Windows 7 上内联函数的 doParallel 问题(适用于 Linux)

r - 在 R 中的 n_distinct() 和 length(unique()) 中选择多列

Python 3 - 基于字符串的字典搜索列表

python - 尝试将 df1 中的每一行与 df1 中的多个其他行进行匹配

r - 在 rstanarm 中为多个预测变量设置先验?

r - 如何为关联规则数据创建项目频率图?通过转换为数据框或数字?

r - R 中自定义类的元素列表的排序列表?

list - ListView 使用Flutter中的属性过滤掉最后一行数据

python-3.x - Pandas 将 groupby 之后的值计数扩展为列

python - 如果在类型列表的单元格值中找到字符串,如何根据条件删除 pandas 数据框中的行?