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)))
我有一个非常简单的问题,但我根本想不出来。
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)))