根据连续时间的长度对数据进行分类

时间:2017-03-08 10:10:53

标签: r loops if-statement for-loop dataframe

可能我问的是一些非常简单的东西,但我是R的新手,我在论坛上找不到类似的东西。

我有一个如下所示的数据框:

             bigDData.dt bigDData.a_temp bigDData.diff bigDData.V33
3148  2009-03-31 09:50:00            8.45      6.071806          yes
3149  2009-03-31 09:55:00            9.31      6.802639          yes
3150  2009-03-31 10:00:00           10.55      7.898750          yes
3151  2009-03-31 10:05:00           11.16      8.357361          yes
3152  2009-03-31 10:10:00           11.37      8.413889          yes
3153  2009-03-31 10:15:00           11.51      8.398750          yes
3154  2009-03-31 10:20:00           11.77      8.499306          yes
3155  2009-03-31 10:25:00           12.42      8.979583          yes
3156  2009-03-31 10:30:00           12.76      9.144722          yes
3412  2009-04-01 07:50:00            7.33      6.233472          yes
3413  2009-04-01 07:55:00            7.65      6.455972          yes
3414  2009-04-01 08:00:00            7.97      6.676250          yes
3415  2009-04-01 08:05:00            8.12      6.724583          yes
3416  2009-04-01 08:10:00            8.40      6.899028          yes

我很想知道连续数据的持续时间。例如,我想知道我在2009-04-01的数据持续时间是20分钟。然后我想根据连续数据的长度对数据进行分类。我尝试了一个for循环,其中if条件,但我不能很好地制定它,所以我得不到我想要的东西。也许有一个R包/功能能够做到这一点?或者也许你是否有人知道如何以正确的方式编写循环?

非常感谢!

1 个答案:

答案 0 :(得分:0)

借助padrdplyr个包,df是您的数据框:

library(dplyr); library(padr)
  df %>% thicken("day", col = "day") %>% 
  group_by(day) %>% 
  summarise(duration = max(bigDData.dt) - min(bigDData.dt))

这假设您的专栏bigDData.dt属于POSIXct类或POSIXlt