r - 仅提取具有 R 中列值的唯一组合的行
问题描述
我有一个提供路线详细信息的航班数据库,看起来像这样
Ori. Dest Carr. Pass Flights
JFK LAX Delta 15004 50
JFK LAX JetBl 17434 100
JFK BOS Delta 15344 89
ATL FLR AmerA 25054 90
OHD LAX Delta 19876 95
OHD LAX AmerA 12344 45
对于输出,我只需要只有 1 个运营商的路线输出应如下所示 -
JFK BOS Delta 15344 89
ATL FLR AmerA 25054 90
如何在 R 中做到这一点?
解决方案
您可以使用 :
library(dplyr)
df %>% group_by(Ori., Dest) %>% filter(n() == 1)
# Ori. Dest Carr. Pass Flights
# <chr> <chr> <chr> <int> <int>
#1 JFK BOS Delta 15344 89
#2 ATL FLR AmerA 25054 90
使用data.table
_
library(data.table)
setDT(df)[, .SD[.N == 1], .(Ori., Dest)]
和基础 R :
subset(df, ave(Flights, Ori., Dest, FUN = length) == 1)
数据
df <- structure(list(Ori. = c("JFK", "JFK", "JFK", "ATL", "OHD", "OHD"
), Dest = c("LAX", "LAX", "BOS", "FLR", "LAX", "LAX"), Carr. = c("Delta",
"JetBl", "Delta", "AmerA", "Delta", "AmerA"), Pass = c(15004L,
17434L, 15344L, 25054L, 19876L, 12344L), Flights = c(50L, 100L,
89L, 90L, 95L, 45L)), class = "data.frame", row.names = c(NA, -6L))
推荐阅读
- php - Docker + PHP + RabbitMQ
- ios - 为 iOS 平台构建的问题
- bash - 如何停止处理文件并继续处理管道中的下一个文件?
- java - 为什么我会收到此错误= [行:33] 错误:无法从类型 Reverse1 对非静态方法 reverse() 进行静态引用
- docusignapi - 与 DocuSign 中的所有签名者共享的自定义选项卡
- google-apps-script - 将工作表复制为新电子表格的脚本无法正常工作
- c# - 将 ID 分配给 ViewBag 并在 MVC 中为其赋值
- mysql - ConnectionRefusedError:在为烧瓶应用程序构建 docker 映像时无法连接 MySQL 容器
- c# - 实体框架并行异步数据库操作顺序运行
- r - Tidyverse,使用 mutate_all 执行数学函数