利用r语言帮我写一段代码,使它可以剔除数据集nycflights13::flights中实际出发时间(dep_time)缺失的观测值
时间: 2023-12-13 10:04:48 浏览: 154
可以使用下面的代码来剔除数据集nycflights13::flights中实际出发时间(dep_time)缺失的观测值:
```R
library(nycflights13)
# 剔除实际出发时间(dep_time)缺失的观测值
flights <- na.omit(flights, cols = c("dep_time"))
```
这里我们使用了`na.omit()`函数来剔除缺失值,`cols`参数用来指定需要处理的列,这里我们指定了"dep_time"列。执行这段代码后,数据集flights中实际出发时间缺失的观测值将被剔除。
相关问题
根据nycflights13::flights中的dep_time和arr_time计算出出发和到达时刻(精确到分)。dep_time和arr_time都是整数型的列,数值格式是HHMM或HMM.
可以使用 lubridate 包中的函数来实现这个功能。具体步骤如下:
1. 首先,将 dep_time 和 arr_time 转换为字符型,并在前面补零,使其成为4位数的格式。
```r
flights$dep_time <- sprintf("%04d", flights$dep_time)
flights$arr_time <- sprintf("%04d", flights$arr_time)
```
2. 然后,使用 lubridate 包中的函数 hm() 将字符型的时刻转换为时间类型。
```r
library(lubridate)
flights$dep_time <- hm(flights$dep_time)
flights$arr_time <- hm(flights$arr_time)
```
3. 最后,使用 lubridate 包中的函数 floor_date() 将时间类型的时刻向下取整到分钟。
```r
flights$dep_time <- floor_date(flights$dep_time, "minute")
flights$arr_time <- floor_date(flights$arr_time, "minute")
```
这样,就可以得到精确到分的出发和到达时刻了。
2. 本题使用数据集 nycflights13::flights (1) 请首先剔除数据中实际出发时间(dep_time)缺失的观测值,然后生成一个新的变量 dep_interval,用来将数据中的实际出发时间分为上午(6:01‐ 12:00)、下午(12:01‐18:00)、晚上(18:01‐24:00)和凌晨(0:01‐6:00)四组,将每一年每一月每一天内每个dep_interval 分组(year, month, day, dep_interval),计算每一组的平均到达延误时间和到达延误的方差,以及到达的机场数量(注意:相同机场不能重复计算)(20’) (2) 选取平均到达延误在 30 分钟以内同时平均到达机场数据不低于 50 个的小组,并按照平均到达延误由大到小排列(5’)
首先,我们需要加载数据集 nycflights13::flights,并剔除实际出发时间(dep_time)缺失的观测值。
```R
library(nycflights13)
library(dplyr)
flights <- flights %>%
filter(!is.na(dep_time))
```
接着,我们可以创建一个新的变量 dep_interval,用来将数据中的实际出发时间分为上午(6:01‐12:00)、下午(12:01‐18:00)、晚上(18:01‐24:00)和凌晨(0:01‐6:00)四组,并将每一年每一月每一天内每个 dep_interval 分组(year, month, day, dep_interval),计算每一组的平均到达延误时间和到达延误的方差,以及到达的机场数量(注意:相同机场不能重复计算)。
```R
flights <- flights %>%
mutate(dep_interval = case_when(
dep_time >= 601 & dep_time <= 1200 ~ "morning",
dep_time > 1200 & dep_time <= 1800 ~ "afternoon",
dep_time > 1800 & dep_time <= 2400 ~ "evening",
dep_time > 0 & dep_time <= 600 ~ "midnight"
)) %>%
group_by(year, month, day, dep_interval) %>%
summarize(avg_arr_delay = mean(arr_delay, na.rm = TRUE),
arr_delay_var = var(arr_delay, na.rm = TRUE),
num_arr_airports = n_distinct(dest)) %>%
ungroup()
```
最后,我们可以选取平均到达延误在 30 分钟以内同时平均到达机场数据不低于 50 个的小组,并按照平均到达延误由大到小排列。
```R
flights_filtered <- flights %>%
filter(avg_arr_delay <= 30, num_arr_airports >= 50) %>%
arrange(desc(avg_arr_delay))
head(flights_filtered)
```
阅读全文