r - 如何对 R 中两个不同表的属性进行算术运算?
问题描述
如果这是一个简单而多余的问题,我深表歉意,但经过几个小时的谷歌搜索,我似乎找不到任何与我正在寻找的东西相匹配的东西。我对 R 很陌生。
我的目标是找出达美航空公司航班迟到的百分比,具体取决于航班从哪个机场起飞。到目前为止,这是我的代码:
#install.packages("nycflights13")
#library(nycflights13)
flts <- nycflights13::flights
# filtering by Delta Airlines and late arrival dates
all_delta_flights <- filter(flts, carrier == "DL")
all_late_delta_flights <- filter(flts, carrier == "DL", arr_delay > 0)
# group by departing airport
by_origin <- all_delta_flights %>% group_by(origin)
by_origin_late <- all_late_delta_flights %>% group_by(origin)
# get number of flights by departure airport
by_origin_late %>% summarise(n = n())
by_origin %>% summarise(n = n())
最后两行代码输出以下两个表。
# A tibble: 3 x 2
<chr> <int>
1 EWR 1725
2 JFK 6353
3 LGA 8335
# A tibble: 3 x 2
origin n
<chr> <int>
1 EWR 4342
2 JFK 20701
3 LGA 23067
我现在要做的是创建一个结合 n 列的新表,例如
# A tibble: 3 x 2
origin n
<chr> <double>
1 EWR .397 # == 1725 / 4342
2 JFK ??? # == 6353 / 20701
3 LGA ???
有没有一种简单的方法可以在 R 中做到这一点?
谢谢!
解决方案
您可以在单个管道中执行此操作而无需加入:
flts %>%
filter(carrier == "DL") %>%
group_by(origin) %>%
summarize(percent = sum(arr_delay > 0) / n())
似乎该列包含 NA 值,arr_delay
您可能需要添加:na.rm=T
sum
flts %>%
filter(carrier == "DL") %>%
group_by(origin) %>%
summarize(percent = sum(arr_delay > 0, na.rm=T) / n())
# A tibble: 3 x 2
# origin percent
# <chr> <dbl>
#1 EWR 0.397
#2 JFK 0.307
#3 LGA 0.361
推荐阅读
- eclipse - 如何在 eclipse/lib GDX 中将代码导出到可运行的 JAR 中?
- python - 如何在python中结合日语和拉丁语对字符串列表进行排序
- jquery - 如何使 jquery、css 外部和内部样式在我的模板中工作?
- android - 不要在我的数据序列改变哈希图的地方
- go - 迁移到centos后编译golang出错
- docker - 如何在不发送上下文的情况下构建 docker 映像?
- loops - Flutter:构建一个 Cupertino Picker,显示包含 2 个小部件的行,从循环遍历 Map
- php - 如何在 laravel Blade 中获取当前路线?
- c# - 使用 System.Transaction 如何更新实体框架中的多行
- jenkins - 在 JFrog Artifactory 插件的 Jenkins 作业的步骤中没有找到这样的 DSL 方法“rtServer”