从R中该列的每一行中减去对应于另一列中特定值的列值

问题描述 投票:0回答:1
Fish_ID 实例 成功 第一次成功 Inst_Diff
1 0 0 0 -2
1 1 0 0 -1
1 2 1 1 0
1 3 0 0 1
1 4 1 0 2
1 5 0 0 3
results %>%
  group_by(Fish_ID) %>%
  mutate(Inst_Diff = Instance- Instance[First_Success==1])

我想创建一个 Inst_Diff 列。使用第一次成功等于 1 的实例编号,则“Inst_Diff”等效于:(实例)-(第一次成功的实例)。我有不止一个 Fish_ID。我尝试在上面编写代码,但它给出了一个错误。我会提出你的建议。谢谢!

r subtraction mutate
1个回答
0
投票

使用

first

的方法
library(dplyr)

df %>% 
  mutate(Inst_Diff = Instance - first(Instance[Success == 1]), .by = Fish_ID)
  Fish_ID Instance Success First_Success Inst_Diff
1       1        0       0             0        -2
2       1        1       0             0        -1
3       1        2       1             1         0
4       1        3       0             0         1
5       1        4       1             0         2
6       1        5       0             0         3
© www.soinside.com 2019 - 2024. All rights reserved.