如何获取位于R的上一行和下一行的值之间的平均值?

詹·科

我有一个关于R的数据框,这些年来这些支出用于许多小组。基本上看起来像这样(灰色列):

表

我想根据上一年和下一年的支出来添加这些年的支出平均值,如黄色列所示。

我尝试使用此代码:

expenditures %>%
 group_by(id) %>%
 mutate(
   avg_exp = ifelse(year != 2011 && year != 2008,
                        mean(c(
                          Spending[Year %in% (Year-1)],
                          Spending[Year %in% (Year+1)])),
                        NA)) %>%
 View()

但是,我保留各种奇怪的数字。首先,ifelse仅适用else条件,即使Year列设置为整数。第二,即使我设置为在else条件下也计算平均值,(每组中的)所有行都填充有相同的数字,我不知道它来自何处(它接近于一般平均值)组中的一组,但不相同)。

有没有简单的方法可以做到这一点?谢谢

阿克伦

在按“ ID”分组后+我们可以使用oflagleadand除以2。default在这两个选项lead,并lagNA如此,那些第一和最后一个“年”会NA在“平均”列

library(dplyr)
expenditures %>% 
    group_by(ID) %>%
    mutate(Mean = (lead(Spending) + lag(Spending))/2)

-输出

# A tibble: 12 x 4
# Groups:   ID [3]
#      ID  Year Spending   new
#   <int> <int>    <dbl> <dbl>
# 1     1  2008       55  NA  
# 2     1  2009       57  60  
# 3     1  2010       65  63.5
# 4     1  2011       70  NA  
# 5     2  2008       80  NA  
# 6     2  2009       87  85  
# 7     2  2010       90  91  
# 8     2  2011       95  NA  
# 9     3  2008      120  NA  
#10     3  2009      123 125  
#11     3  2010      130 129  
#12     3  2011      135  NA  

或者另一种选择是cbindlead/lag输出,然后使用rowMeans

expenditures %>%
   group_by(ID) %>%
   mutate(Mean = rowMeans(cbind(lead(Spending), lag(Spending))))

数据

expenditures <- structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L), Year = c(2008L, 2009L, 2010L, 2011L, 2008L, 2009L, 2010L, 
2011L, 2008L, 2009L, 2010L, 2011L), Spending = c(55, 57, 65, 
70, 80, 87, 90, 95, 120, 123, 130, 135)), class = "data.frame",
row.names = c(NA, 
-12L))

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取值之间的平均值,该平均值位于R中的上一行和下一行?

来自分类Dev

上一行和下一行的平均值缺少值

来自分类Dev

r-按第一行计算的平均值和总和值

来自分类Dev

平均上一行和下一行缺少值

来自分类Dev

一行(两列的平均值)和同一行(另一列的值)的总和

来自分类Dev

同一行值上的awk几何平均值

来自分类Dev

SparkSql 查询以从 cassandra 获取已定义值的上一行和下一行

来自分类Dev

如何获取包含缺失数字的每一行的平均值?

来自分类Dev

R:计算前一行和组内的平均值

来自分类Dev

Excel - 如果另一行有值,如何找到平均值?

来自分类Dev

Pyspark滚动平均值从第一行开始

来自分类Dev

查找除第一行以外的平均值

来自分类Dev

MYSQL中每一行的平均值

来自分类Dev

计算列的平均值,第一行除外

来自分类Dev

SQL在表的末尾添加一行和一列以显示平均值

来自分类Dev

从使用(WHERE)条件选择的行中获取上一行和下一行

来自分类Dev

一行命令可获取大文件中特定列的平均值

来自分类Dev

计算包含值列表的每一行的平均值

来自分类Dev

计算列中同一行内多个值的平均值

来自分类Dev

逐行读取并获取上一行和下一行

来自分类Dev

根据前一行和条件列的平均值创建和附加行

来自分类Dev

在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

来自分类Dev

在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

来自分类Dev

将一行的一个值与同一列的所有行的平均值进行比较

来自分类Dev

在R中,如何根据上一行(或下一行)的更改为变量设置值?

来自分类Dev

如何在python中的2D列表中获得一行的平均值?

来自分类常见问题

如何找到数据库中分组列的每一行的平均值

来自分类Dev

如何找到数据库中分组列的每一行的平均值

来自分类Dev

如何从文本文件中取出每一行并取平均值?

Related 相关文章

  1. 1

    如何获取值之间的平均值,该平均值位于R中的上一行和下一行?

  2. 2

    上一行和下一行的平均值缺少值

  3. 3

    r-按第一行计算的平均值和总和值

  4. 4

    平均上一行和下一行缺少值

  5. 5

    一行(两列的平均值)和同一行(另一列的值)的总和

  6. 6

    同一行值上的awk几何平均值

  7. 7

    SparkSql 查询以从 cassandra 获取已定义值的上一行和下一行

  8. 8

    如何获取包含缺失数字的每一行的平均值?

  9. 9

    R:计算前一行和组内的平均值

  10. 10

    Excel - 如果另一行有值,如何找到平均值?

  11. 11

    Pyspark滚动平均值从第一行开始

  12. 12

    查找除第一行以外的平均值

  13. 13

    MYSQL中每一行的平均值

  14. 14

    计算列的平均值,第一行除外

  15. 15

    SQL在表的末尾添加一行和一列以显示平均值

  16. 16

    从使用(WHERE)条件选择的行中获取上一行和下一行

  17. 17

    一行命令可获取大文件中特定列的平均值

  18. 18

    计算包含值列表的每一行的平均值

  19. 19

    计算列中同一行内多个值的平均值

  20. 20

    逐行读取并获取上一行和下一行

  21. 21

    根据前一行和条件列的平均值创建和附加行

  22. 22

    在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

  23. 23

    在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

  24. 24

    将一行的一个值与同一列的所有行的平均值进行比较

  25. 25

    在R中,如何根据上一行(或下一行)的更改为变量设置值?

  26. 26

    如何在python中的2D列表中获得一行的平均值?

  27. 27

    如何找到数据库中分组列的每一行的平均值

  28. 28

    如何找到数据库中分组列的每一行的平均值

  29. 29

    如何从文本文件中取出每一行并取平均值?

热门标签

归档