我有一个像这样的数据框
Number Type Time
4 B 10
5 B 11
5 B 9
1 B 8
8 R 7
3 R 9
4 R 5
4 R 5
我按类型分组并希望创建一个名为" Adjusted_Time"的新列。它包含之前的数字时间,最终的Df看起来像这样
Number Type Time Adjusted_Time
4 B 10 8
5 B 11 10
6 B 9 11
3 B 8 N/A
8 R 7 9
7 R 9 5
6 R 5 5
5 R 5 N/A
只要不存在直接低于该数字的数字,N / A就会消失。 我想用dplyr来做这件事 现在我有
df %>% group_by(Type) %>% Mutate(Adjusted_Time = ....)
答案 0 :(得分:1)
您正在寻找的功能是lag
df %>% group_by(Type) %>% arrange(Number) %>% mutate(Adjusted_Time = lag(Time))
Source: local data frame [8 x 4]
Groups: Type
Number Type Time Adjusted_Time
1 1 B 8 NA
2 4 B 10 8
3 5 B 11 10
4 5 B 9 11
5 3 R 9 NA
6 4 R 5 9
7 4 R 5 5
8 8 R 7 5
有关详细信息,请参阅:
http://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html