每小时对 R 中基于时间的数据进行子集化

Subsetting time based data in R on hourly basis

我有基于小时的数据集,即 hour1 的一些数据行等等。我不知道每小时的数据行数,我想创建一个只有每小时第一个条目的新数据集。 对于这样的数据集,

hour    data
1   33
1   34
1   36
2   38
2   40
3   41
3   42

我只想提取第 1 小时的第一个读数,然后提取第 2 小时的第一个读数,依此类推。然后我想减去连续的读数。比如,38-33 和 41-38

library(dplyr) # df1 is your data frame
df1 %>%
group_by(hour) %>%
summarise(first=first(data))%>%
mutate(first_diff=lead(first,1)-first)
Source: local data frame [3 x 3]

  hour first first_diff
1    1    33          5
2    2    38          3
3    3    41         NA

或者,

library(dplyr) # df1 is your data frame
df1 %>%
group_by(hour) %>%
summarise(first=first(data))%>%
mutate(first_diff=lag(first,1)-first)
Source: local data frame [3 x 3]

  hour first first_diff
1    1    33         NA
2    2    38         -5
3    3    41         -3