如何计算与 R 中相同列值关联的两行值的差值?

How do I calculate the difference of two row values associated with the same column value in R?

我有一个 R 问题。

我想计算与另一列中的相同 Record_ID 关联的两行值 sjc 是否有增加 (1)/减少 (0)?

这是生成数据框的代码:

df <- data.frame("Record_ID" = c(1, 1,2,2,3,3,4,4,5,5),
                   "sjc"       = c(3,28,1,1,2,0,2,4,9,2)) 

原始数据框

这就是我想要的样子:

结果数据框

感谢您的帮助!

在 base R 中,我们可以使用 ave,按 Record_ID 分组并检查 sjc 值的差异是否大于 0。

df$inc_dec <- with(df, ave(sjc, Record_ID, FUN = function(x) c(NA, diff(x) > 0)))

df
#   Record_ID sjc inc_dec
#1          1   3      NA
#2          1  28       1
#3          2   1      NA
#4          2   1       0
#5          3   2      NA
#6          3   0       0
#7          4   2      NA
#8          4   4       1
#9          5   9      NA
#10         5   2       0

有了dplyr,我们可以用lag得到之前的值

library(dplyr)
df %>% group_by(Record_ID) %>%  mutate(inc_dec = +(sjc - lag(sjc) > 0))

data.table

类似
library(data.table)
setDT(df)[, inc_dec := +(sjc - shift(sjc) > 0), Record_ID]