根据缺失的小时数删除天数
Remove days based on number of hours missing
我有一些按小时测量的空气污染数据。
Datetime
PM2.5
Station.id
2020-01-01 00:00:00
10
1
2020-01-01 01:00:00
NA
1
2020-01-01 02:00:00
15
1
2020-01-01 03:00:00
NA
1
2020-01-01 04:00:00
7
1
2020-01-01 05:00:00
20
1
2020-01-01 06:00:00
30
1
2020-01-01 00:00:00
NA
2
2020-01-01 01:00:00
17
2
2020-01-01 02:00:00
21
2
2020-01-01 03:00:00
55
2
我从许多站收集了大量数据。使用 R,当一天有 1. 总共 18 小时的缺失数据和 2. 8小时连续缺失数据。
PS。原始数据可以是 NAs 已经被删除 或者 NAs 被插入.
“最有效” 方式几乎肯定会使用 data.table
。像这样:
library(data.table)
setDT(your_data)
your_data[, date := as.IDate(Datetime)][,
if(
!(sum(is.na(PM2.5)) >= 18 &
with(rle(is.na(PM2.5)), max(lengths[values])) >= 8
)) .SD,
by = .(date, station.id)
]
# date Datetime PM2.5
# 1: 2020-01-01 2020-01-01 00:00:00 10
# 2: 2020-01-01 2020-01-01 01:00:00 NA
# 3: 2020-01-01 2020-01-01 02:00:00 15
# 4: 2020-01-01 2020-01-01 03:00:00 NA
# 5: 2020-01-01 2020-01-01 04:00:00 7
# 6: 2020-01-01 2020-01-01 05:00:00 20
# 7: 2020-01-01 2020-01-01 06:00:00 30
使用此示例数据:
your_data = fread(text = 'Datetime PM2.5
2020-01-01 00:00:00 10
2020-01-01 01:00:00 NA
2020-01-01 02:00:00 15
2020-01-01 03:00:00 NA
2020-01-01 04:00:00 7
2020-01-01 05:00:00 20
2020-01-01 06:00:00 30')
我有一些按小时测量的空气污染数据。
Datetime | PM2.5 | Station.id |
---|---|---|
2020-01-01 00:00:00 | 10 | 1 |
2020-01-01 01:00:00 | NA | 1 |
2020-01-01 02:00:00 | 15 | 1 |
2020-01-01 03:00:00 | NA | 1 |
2020-01-01 04:00:00 | 7 | 1 |
2020-01-01 05:00:00 | 20 | 1 |
2020-01-01 06:00:00 | 30 | 1 |
2020-01-01 00:00:00 | NA | 2 |
2020-01-01 01:00:00 | 17 | 2 |
2020-01-01 02:00:00 | 21 | 2 |
2020-01-01 03:00:00 | 55 | 2 |
我从许多站收集了大量数据。使用 R,当一天有 1. 总共 18 小时的缺失数据和 2. 8小时连续缺失数据。
PS。原始数据可以是 NAs 已经被删除 或者 NAs 被插入.
“最有效” 方式几乎肯定会使用 data.table
。像这样:
library(data.table)
setDT(your_data)
your_data[, date := as.IDate(Datetime)][,
if(
!(sum(is.na(PM2.5)) >= 18 &
with(rle(is.na(PM2.5)), max(lengths[values])) >= 8
)) .SD,
by = .(date, station.id)
]
# date Datetime PM2.5
# 1: 2020-01-01 2020-01-01 00:00:00 10
# 2: 2020-01-01 2020-01-01 01:00:00 NA
# 3: 2020-01-01 2020-01-01 02:00:00 15
# 4: 2020-01-01 2020-01-01 03:00:00 NA
# 5: 2020-01-01 2020-01-01 04:00:00 7
# 6: 2020-01-01 2020-01-01 05:00:00 20
# 7: 2020-01-01 2020-01-01 06:00:00 30
使用此示例数据:
your_data = fread(text = 'Datetime PM2.5
2020-01-01 00:00:00 10
2020-01-01 01:00:00 NA
2020-01-01 02:00:00 15
2020-01-01 03:00:00 NA
2020-01-01 04:00:00 7
2020-01-01 05:00:00 20
2020-01-01 06:00:00 30')