Fra*_*nky 13 diff group-by r dplyr
假设我有这个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
Run Code Online (Sandbox Code Playgroud)
使用dplyr我可以按ID对它们进行分组,并过滤出现多次出现的ID
data <- data %>% group_by(ID) %>% filter(n() > 1)
Run Code Online (Sandbox Code Playgroud)
现在,我想要实现的是添加一个列:差异=期间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
Run Code Online (Sandbox Code Playgroud)
在电子表格中执行此操作相当简单,但我不知道如何在R中实现此功能.
感谢您提供任何帮助或指导.
ale*_*emm 26
这是另一种解决方案lag
.根据使用情况,它可能比diff
因为NAs
清楚地显示特定值没有前任而更方便,而0
使用diff
可能是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
Run Code Online (Sandbox Code Playgroud)