想筛选的数据帧 - 寻找组时间段,其中有在另一个变量有限变化

问题描述 投票:0回答:1

我有多个列数据帧和它们由时间列排序。带有时间戳的每一秒。我要搜索的数据帧,在另一变量具有有限的变型1个分钟的周期。例如,我想在数据帧中,其中TWS(真实风速)具有不超过5节的变化的每一分钟。这些一分钟的周期也应该不会重叠。

一旦我们有了1个分钟的部分,创建数据的每分钟另一个数据帧平均成的行。

这里是数据的头

        Date                Time     Lat  Lon   AWA  AWS    TWA  TWS  
1 19/10/2018 2019-02-11 12:06:16 35.8952 14.5  -99.7 8.42  -99.7 8.42 
2 19/10/2018 2019-02-11 12:06:17 35.8952 14.5  -99.1 8.24  -99.1 8.24 
3 19/10/2018 2019-02-11 12:06:18 35.8952 14.5  -99.2 7.34  -99.2 7.34 
4 19/10/2018 2019-02-11 12:06:19 35.8952 14.5  -99.6 6.87  -99.6 6.87 
5 19/10/2018 2019-02-11 12:06:20 35.8952 14.5  -101.1 8.85 -101.1 8.85 
6 19/10/2018 2019-02-11 12:06:21 35.8952 14.5  -101.6 9.39 -101.6 9.39 

r dataframe filter subset variations
1个回答
1
投票
library(dplyr)
library(lubridate)
df %>% 
   mutate(Date=as.Date(Date), Time=ymd_hms(Time)) %>% 
   group_by(gr=minute(Time)) %>% 
   mutate(flag=max(TWS,na.rm=TRUE)-min(TWS,na.rm=TRUE)) %>% 
   filter(flag<5) %>% 
   mutate_all(.,mean,na.rm=TRUE) %>% distinct()

# A tibble: 1 x 10
# Groups:   gr [1]
   Date       Time                  Lat   Lon   AWA   AWS   TWA   TWS    gr  flag
   <date>     <dttm>              <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl>
1 0019-10-20 2019-02-11 12:06:17  35.9  14.5 -99.3    8. -99.3    8.     6  1.08

对于每一个组中的元素之间的差异,我们可以使用dplyr::lag

... mutate(flag=TWS-lag(TWS, default = first(TWS))) %>% 
    filter(all(abs(flag)<5)) %>% mutate_all(.,mean,na.rm=TRUE) %>% distinct() 

数据

df <- read.table(text = "
Date                Time     Lat  Lon   AWA  AWS    TWA  TWS  
1 '19/10/2018' '2019-02-11 12:06:16' 35.8952 14.5  -99.7 8.42  -99.7 8.42 
2 '19/10/2018' '2019-02-11 12:06:17' 35.8952 14.5  -99.1 8.24  -99.1 8.24 
3 '19/10/2018' '2019-02-11 12:06:18' 35.8952 14.5  -99.2 7.34  -99.2 7.34 
4 '19/10/2018' '2019-02-11 12:07:19' 35.8952 14.5  -99.6 6.87  -99.6 6.87 
5 '19/10/2018' '2019-02-11 12:07:20' 35.8952 14.5  -101.1 8.85 -101.1 8.85 
6 '19/10/2018' '2019-02-11 12:07:21' 35.8952 14.5  -101.6 9.39 -101.6 16.39 
", header=TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.