如何使用dplyr查找R数据框中两行中的值之间的差异

赛车Ta

我有一个R数据框,例如:

df <- data.frame(period=rep(1:4,2), 
                 farm=c(rep('A',4),rep('B',4)), 
                 cumVol=c(1,5,15,31,10,12,16,24),
                 other = 1:8);

  period farm cumVol other
1      1    A      1     1
2      2    A      5     2
3      3    A     15     3
4      4    A     31     4
5      1    B     10     5
6      2    B     12     6
7      3    B     16     7
8      4    B     24     8

我如何在每个时段的每个场中找到cumVol的变化,而忽略“其他”列?我想要一个这样的数据框(可以选择保留cumVol列):

  period farm volume other
1      1    A      0     1
2      2    A      4     2
3      3    A     10     3
4      4    A     16     4
5      1    B      0     5
6      2    B      2     6
7      3    B      4     7
8      4    B      8     8

实际上,可能有许多类似“农场”的列和许多类似“其他”(即被忽略)的列。我希望能够使用变量指定所有列名称。

我正在使用dplyr软件包。

文森特

在dplyr中:

require(dplyr)
df %>%
  group_by(farm) %>%
  mutate(volume = cumVol - lag(cumVol, default = cumVol[1]))

Source: local data frame [8 x 5]
Groups: farm

  period farm cumVol other volume
1      1    A      1     1      0
2      2    A      5     2      4
3      3    A     15     3     10
4      4    A     31     4     16
5      1    B     10     5      0
6      2    B     12     6      2
7      3    B     16     7      4
8      4    B     24     8      8

可能所需的输出实际上应该如下所示?

df %>%
  group_by(farm) %>%
  mutate(volume = cumVol - lag(cumVol, default = 0))

  period farm cumVol other volume
1      1    A      1     1      1
2      2    A      5     2      4
3      3    A     15     3     10
4      4    A     31     4     16
5      1    B     10     5     10
6      2    B     12     6      2
7      3    B     16     7      4
8      4    B     24     8      8

编辑:跟进您的评论,我认为您正在寻找arrange()。并非如此,最好是提出一个新问题。

df1 <- data.frame(period=rep(1:4,4), farm=rep(c(rep('A',4),rep('B',4)),2), crop=(c(rep('apple',8), rep('pear',8))), cumCropVol=c(1,5,15,31,10,12,16,24,11,15,25,31,20,22,26,34), other = rep(1:8,2) ); 
df1 %>% 
  arrange(desc(period), desc(farm)) %>%
  group_by(period, farm) %>% 
  summarise(cumVol=sum(cumCropVol))

编辑:跟进#2

df1 <- data.frame(period=rep(1:4,4), farm=rep(c(rep('A',4),rep('B',4)),2), crop=(c(rep('apple',8), rep('pear',8))), cumCropVol=c(1,5,15,31,10,12,16,24,11,15,25,31,20,22,26,34), other = rep(1:8,2) ); 
df <- df1 %>% 
  arrange(desc(period), desc(farm)) %>% 
  group_by(period, farm) %>% 
  summarise(cumVol=sum(cumCropVol))

ungroup(df) %>% 
  arrange(farm) %>%
  group_by(farm) %>% 
  mutate(volume = cumVol - lag(cumVol, default = 0))

Source: local data frame [8 x 4]
Groups: farm

  period farm cumVol volume
1      1    A     12     12
2      2    A     20      8
3      3    A     40     20
4      4    A     62     22
5      1    B     30     30
6      2    B     34      4
7      3    B     42      8
8      4    B     58     16

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用dplyr查找R数据框中两行中的值之间的差异

来自分类Dev

在pandas数据框中创建一列,该列计算两行之间的差异

来自分类Dev

SQL查询以获取两行中的值之间的差异

来自分类Dev

如何找到由R中的日期和时间组成的两行数据之间的差异

来自分类Dev

如何在R中的两个数据框之间查找和替换值

来自分类Dev

在R的数据框中合并两行

来自分类Dev

在 SystemOut.log 中查找两行之间多秒差异的脚本

来自分类Dev

查找表中两行之间的差异。甲骨文

来自分类Dev

R-如果一个值= x,则删除“成对”数据框中的两行

来自分类Dev

在数据框中,如何合并两行

来自分类Dev

如何将两行之间的差异保存到R中的同一data.frame中?

来自分类Dev

报告 R 中两个数据框之间的差异

来自分类Dev

如何在R中的列表中将两行移到数据框的顶部?

来自分类Dev

r 中两行之间的时间

来自分类Dev

组中两行之间的SQL差异

来自分类Dev

仅显示mysql中两行之间的差异

来自分类Dev

如何找到同一表中两行之间的差异并列出不匹配的记录?mysql在表中查找不匹配的行

来自分类Dev

从两行中查找公用数据,并且数据之间用逗号分隔

来自分类Dev

如何计算熊猫数据框中连续行之间的差异?

来自分类Dev

如何使用jQuery在单列中添加两行的值?

来自分类Dev

我需要通过在R的两行之间的日期填充另一列中的值来拉长数据集

来自分类Dev

python-在熊猫中的数据框中查找值之间的差异

来自分类Dev

查找两行之间的差异并添加它们

来自分类Dev

如何在oracle中具有日期的两行之间查找特定日期?

来自分类Dev

如何在Excel工作表中查找一列的两行之间的时差?

来自分类Dev

如何通过SQL获取表中的两行之间的差异以及如何将其放置在新列中

来自分类Dev

使用dplyr更改特定行中数据框中的值

来自分类Dev

使用dplyr更改特定行中数据框中的值

来自分类Dev

如何使用条件比较两行之间的值

Related 相关文章

  1. 1

    如何使用dplyr查找R数据框中两行中的值之间的差异

  2. 2

    在pandas数据框中创建一列,该列计算两行之间的差异

  3. 3

    SQL查询以获取两行中的值之间的差异

  4. 4

    如何找到由R中的日期和时间组成的两行数据之间的差异

  5. 5

    如何在R中的两个数据框之间查找和替换值

  6. 6

    在R的数据框中合并两行

  7. 7

    在 SystemOut.log 中查找两行之间多秒差异的脚本

  8. 8

    查找表中两行之间的差异。甲骨文

  9. 9

    R-如果一个值= x,则删除“成对”数据框中的两行

  10. 10

    在数据框中,如何合并两行

  11. 11

    如何将两行之间的差异保存到R中的同一data.frame中?

  12. 12

    报告 R 中两个数据框之间的差异

  13. 13

    如何在R中的列表中将两行移到数据框的顶部?

  14. 14

    r 中两行之间的时间

  15. 15

    组中两行之间的SQL差异

  16. 16

    仅显示mysql中两行之间的差异

  17. 17

    如何找到同一表中两行之间的差异并列出不匹配的记录?mysql在表中查找不匹配的行

  18. 18

    从两行中查找公用数据,并且数据之间用逗号分隔

  19. 19

    如何计算熊猫数据框中连续行之间的差异?

  20. 20

    如何使用jQuery在单列中添加两行的值?

  21. 21

    我需要通过在R的两行之间的日期填充另一列中的值来拉长数据集

  22. 22

    python-在熊猫中的数据框中查找值之间的差异

  23. 23

    查找两行之间的差异并添加它们

  24. 24

    如何在oracle中具有日期的两行之间查找特定日期?

  25. 25

    如何在Excel工作表中查找一列的两行之间的时差?

  26. 26

    如何通过SQL获取表中的两行之间的差异以及如何将其放置在新列中

  27. 27

    使用dplyr更改特定行中数据框中的值

  28. 28

    使用dplyr更改特定行中数据框中的值

  29. 29

    如何使用条件比较两行之间的值

热门标签

归档