我有以下数据框架:
代码:
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。
因此,预期的结果将是:
发布于 2018-06-19 15:06:17
我们可以用
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
发布于 2018-06-19 15:04:53
下面是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
https://stackoverflow.com/questions/50931513
复制相似问题