沿数据框行滑动并将行与下一行进行比较

CodeNoob

我猜应该已经问过类似的问题,但是我只能找到python和SQL的答案。因此,当还要求输入R时,请在评论中通知我!


数据
假设我们有一个像这样的数据框:

set.seed(1); df <- data.frame( position = 1:20,value = sample(seq(1,100), 20))
# In cause you do not get the same dataframe see the comment by @Ian Campbell - thanks!
   position value
1         1    27
2         2    37
3         3    57
4         4    89
5         5    20
6         6    86
7         7    97
8         8    62
9         9    58
10       10     6
11       11    19
12       12    16
13       13    61
14       14    34
15       15    67
16       16    43
17       17    88
18       18    83
19       19    32
20       20    63

目标
我感兴趣的是计算头寸的平均值valuen然后再从value下一个n头寸的平均值减去该平均值n=5



我现在尝试使用的是这种方法,但是,当我将其应用于更大的数据框时,它会花费大量时间,因此想知道是否有一种更快的方法。

calc <- function( pos ) {
  this.five <- df %>% slice(pos:(pos+4)) 
  next.five <-  df %>% slice((pos+5):(pos+9))
  differ = mean(this.five$value)- mean(next.five$value)
  data.frame(dif= differ)
}

df %>% 
  group_by(position) %>%
  do(calc(.$position))

产生下表:

  position     dif
      <int>   <dbl>
 1        1 -15.8  
 2        2   9.40 
 3        3  37.6  
 4        4  38.8  
 5        5  37.4  
 6        6  22.4  
 7        7   4.20 
 8        8 -26.4  
 9        9 -31    
10       10 -35.4  
11       11 -22.4  
12       12 -22.3  
13       13  -0.733
14       14  15.5  
15       15  -0.400
16       16 NaN    
17       17 NaN    
18       18 NaN    
19       19 NaN    
20       20 NaN    
伊恩·坎贝尔

我怀疑使用data.table方法可能会更快。

library(data.table)
setDT(df)
df[,c("roll.position","rollmean") := lapply(.SD,frollmean,n=5,fill=NA, align = "left")]
df[, result := rollmean[.I] - rollmean[.I + 5]]
df[,.(position,value,rollmean,result)]
#    position value rollmean result
# 1:        1    27     46.0  -15.8
# 2:        2    37     57.8    9.4
# 3:        3    57     69.8   37.6
# 4:        4    89     70.8   38.8
# 5:        5    20     64.6   37.4
# 6:        6    86     61.8   22.4
# 7:        7    97     48.4    4.2
# 8:        8    62     32.2  -26.4
# 9:        9    58     32.0  -31.0
#10:       10     6     27.2  -35.4
#11:       11    19     39.4  -22.4
#12:       12    16     44.2     NA
#13:       13    61     58.6     NA
#14:       14    34     63.0     NA
#15:       15    67     62.6     NA
#16:       16    43     61.8     NA
#17:       17    88       NA     NA
#18:       18    83       NA     NA
#19:       19    32       NA     NA
#20:       20    63       NA     NA

数据

RNGkind(sample.kind = "Rounding")
set.seed(1); df <- data.frame( position = 1:20,value = sample(seq(1,100), 20))
RNGkind(sample.kind = "default")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Oracle SQL中将一行与上一行进行比较?

来自分类Dev

按列值对数据框中的每一行进行排序

来自分类Dev

与分组数据表的下一行比较

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

vb.net用于将一行与另一行进行比较的每个循环

来自分类Dev

{awk}如何读取一行并将$与下一行/上一行进行比较?

来自分类Dev

熊猫比较下一行

来自分类Dev

SQL Server中的UNION如何将一行与另一行进行比较?

来自分类Dev

将每一行与数据框中的所有行进行比较,并将结果保存在每一行的列表中

来自分类Dev

将一个数据框的一行与其他数据框的行进行比较?

来自分类Dev

Pandas数据框将列与一个值进行比较,然后将这一行和上一行放入另一数据框

来自分类Dev

将一行中的每个列与数据库sql中的每一行进行比较

来自分类Dev

如何对熊猫数据框中的每一行进行排序并获取索引?

来自分类Dev

如何与R中的下一行进行计算和比较

来自分类Dev

将下一行与上一行按索引进行比较(熊猫)

来自分类Dev

将新行与TXT文件中的最后一行进行比较

来自分类Dev

查询表并与另一行进行比较

来自分类Dev

Perl:将文件的每一行与该文件的每一行进行比较

来自分类Dev

如何将一行与另一行进行比较?

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

awk:用于分析文件并将数据与下一行进行比较并以csv格式打印的命令

来自分类Dev

如何将当前行与php中mysql表的下一行进行比较

来自分类Dev

如何在Excel中的DAX中将一行与另一行进行比较

来自分类Dev

使用PowerShell将行与CSV中的下一行进行比较

来自分类Dev

用下一行替换数据框元素的数据

来自分类Dev

使用bash将每行的特殊列与下一行进行比较

来自分类Dev

将前一行与当前行进行比较

来自分类Dev

awk 或 sed:如何根据上一行和下一行进行修改

来自分类Dev

如何将具有行的记录与另一行进行比较?

Related 相关文章

  1. 1

    如何在Oracle SQL中将一行与上一行进行比较?

  2. 2

    按列值对数据框中的每一行进行排序

  3. 3

    与分组数据表的下一行比较

  4. 4

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  5. 5

    vb.net用于将一行与另一行进行比较的每个循环

  6. 6

    {awk}如何读取一行并将$与下一行/上一行进行比较?

  7. 7

    熊猫比较下一行

  8. 8

    SQL Server中的UNION如何将一行与另一行进行比较?

  9. 9

    将每一行与数据框中的所有行进行比较,并将结果保存在每一行的列表中

  10. 10

    将一个数据框的一行与其他数据框的行进行比较?

  11. 11

    Pandas数据框将列与一个值进行比较,然后将这一行和上一行放入另一数据框

  12. 12

    将一行中的每个列与数据库sql中的每一行进行比较

  13. 13

    如何对熊猫数据框中的每一行进行排序并获取索引?

  14. 14

    如何与R中的下一行进行计算和比较

  15. 15

    将下一行与上一行按索引进行比较(熊猫)

  16. 16

    将新行与TXT文件中的最后一行进行比较

  17. 17

    查询表并与另一行进行比较

  18. 18

    Perl:将文件的每一行与该文件的每一行进行比较

  19. 19

    如何将一行与另一行进行比较?

  20. 20

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  21. 21

    awk:用于分析文件并将数据与下一行进行比较并以csv格式打印的命令

  22. 22

    如何将当前行与php中mysql表的下一行进行比较

  23. 23

    如何在Excel中的DAX中将一行与另一行进行比较

  24. 24

    使用PowerShell将行与CSV中的下一行进行比较

  25. 25

    用下一行替换数据框元素的数据

  26. 26

    使用bash将每行的特殊列与下一行进行比较

  27. 27

    将前一行与当前行进行比较

  28. 28

    awk 或 sed:如何根据上一行和下一行进行修改

  29. 29

    如何将具有行的记录与另一行进行比较?

热门标签

归档