R中有没有办法在下面添加一行来计算上面几行的差异(tidyr/dplyr)?

Is there a way in R to add a row underneath that calculates difference of above rows (tidyr/dplyr)?

我有一个非常简单的问题,但我根本想不出来。

animal age
cat 12
dog 8

通常我会应用 data %>% mutate(diff = age[1] - age[2]),但它会在旁边添加一列,而我想要在下面添加一行。

以下是我想要的输出。差异行只是计算猫的年龄减去狗的年龄。所以这里有两个示例输出:

animal age
cat 12
dog 8
diff 4
animal age
cat 10
dog 13
diff -3

如有任何帮助,我们将不胜感激。谢谢! 同样不,我不想保存该对象。换句话说,通过tidyverse任何方式都是最好的。

您可以使用 tibble 中的 add_row 函数。

library(tidyverse)

df <- read.table(header = T, text = "
animal  age
cat 10
dog 13")         

df %>% add_row(animal = "diff", age = diff(rev(df$age)))

  animal age
1    cat  10
2    dog  13
3   diff  -3

嗯,怎么样:

bind_rows(df, df %>% summarize(animal = "diff", age = first(age) - last(age)))