【发布时间】:2018-10-30 07:10:37
【问题描述】:
我使用以下代码准备了一些数据:
# # Data Preparation ----------------------
library(lubridate)
start_date <- "2018-10-30 00:00:00"
start_date <- as.POSIXct(start_date, origin="1970-01-01")
dates <- c(start_date)
for(i in 1:287) {
dates <- c(dates, start_date + minutes(i * 10))
}
dates <- as.POSIXct(dates, origin="1970-01-01")
date_val <- format(dates, '%d-%m-%Y')
weather.forecast.data <- data.frame(dateTime = dates, date = date_val, id = 'GH1', radiation = runif(288))
weather.forecast.data$radiation[(weather.forecast.data$id == 'GH1') & (weather.forecast.data$date == '30-10-2018')] = NA
我的任务是从weather.forecast.data 中过滤掉每个唯一的 id 和 date 实例的所有辐射值都缺失的行。
我有使用data.table编写的代码:
library(data.table)
setDT(weather.forecast.data)
weather.forecast.data[, dateid := paste(date, id, sep = "__")]
weather.forecast.data[, is_all_na := all(is.na(radiation)), dateid]
weather.forecast.data = weather.forecast.data[!(is_all_na), !c('dateid', 'is_all_na'), with = FALSE]
我正在尝试使用dplyr 函数和管道操作来使其更具可读性:
library(dplyr)
weather.forecast.data %>%
mutate(dateid = paste(date, id, sep = "__")) %>%
group_by(dateid) %>%
summarise(is_all_na = all(is.na(radiation))) %>%
filter(is_all_na) %>%
select(dateid)
我能够找回所有丢失的id。但是,我无法从原始数据中删除 id。
【问题讨论】:
标签: r dplyr data.table