gpt4 book ai didi

r - 在dplyr::group_by()之后的组内进行diff操作

转载 作者:行者123 更新时间:2023-12-03 23:20:52 30 4
gpt4 key购买 nike

假设我有这个data.frame(带有3个变量)

ID  Period  Score
123 2013 146
123 2014 133
23 2013 150
456 2013 205
456 2014 219
456 2015 140
78 2012 192
78 2013 199
78 2014 133
78 2015 170


使用dplyr,我可以按ID对它们进行分组并过滤出现多次的ID

data <- data %>% group_by(ID) %>% filter(n() > 1)


现在,我想要实现的是添加一列:
差异=期间P的分数-期间P-1的分数
得到这样的事情:

ID  Period  Score   Difference
123 2013 146
123 2014 133 -13
456 2013 205
456 2014 219 14
456 2015 140 -79
78 2012 192
78 2013 199 7
78 2014 133 -66
78 2015 170 37


在电子表格中执行此操作相当简单,但是我不知道如何在R中实现此功能。
感谢您的帮助或指导。

最佳答案

这是使用lag的另一种解决方案。根据使用情况,它可能比diff更方便,因为NAs清楚地表明特定值不具有前任,而使用0diff可能是a)缺少前任或b)两个周期之间的减法。

data %>% group_by(ID) %>% filter(n() > 1) %>%
mutate(
Difference = Score - lag(Score)
)

# ID Period Score Difference
# 1 123 2013 146 NA
# 2 123 2014 133 -13
# 3 456 2013 205 NA
# 4 456 2014 219 14
# 5 456 2015 140 -79
# 6 78 2012 192 NA
# 7 78 2013 199 7
# 8 78 2014 133 -66
# 9 78 2015 170 37

关于r - 在dplyr::group_by()之后的组内进行diff操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28045910/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com