R数据帧。用步骤检查和减去

时间:2018-06-19 15:00:44

标签: r

我有以下数据框:

enter image description here

代码:

name <- c("A","A","A","B")
a <- c (1,2,3,4)
b <- c (5, 6, 7, 8)

df <- data.frame(name,a,b)

我想做的是复制Excel步骤。

如果第2行中的名称==第1行中的名称,则6-1-

如果第3行中的名称==第2行中的名称,则7-2

如果第4行中的名称==第3行中的名称,则没有B <> A。

所以期望的结果是:

enter image description here

2 个答案:

答案 0 :(得分:2)

这里是dplyr

的尝试
library(dplyr)
df %>% group_by(name) %>% mutate(result = b- lag(a))

# A tibble: 4 x 4
# Groups: name [2]
#  name      a     b result
#  <fct> <dbl> <dbl> <dbl>
#1 A      1.00  5.00 NA   
#2 A      2.00  6.00  5.00
#3 A      3.00  7.00  5.00
#4 B      4.00  8.00 NA 

答案 1 :(得分:1)

我们可以使用

library(dplyr)
df %>%
   group_by(name) %>%
   mutate(new = lag(lead(b)-a))
# A tibble: 4 x 4
# Groups:   name [2]
#  name      a     b   new
#  <fct> <dbl> <dbl> <dbl>
#1 A         1     5     NA
#2 A         2     6     5
#3 A         3     7     5
#4 B         4     8    NA