【发布时间】:2018-11-17 12:52:04
【问题描述】:
我有包含一堆不同天气变量(湿度、温度等)的天气数据集,还有一个带有气象站 ID 的列。
我想按每个站点进行过滤,并在过滤后对天气变量进行汇总,然后组合回 1 个数据框或 tibble。
我用 mtcars 做了一个 reprex,它使用圆柱体作为我的离散变量而不是我的气象站。
我应该创建一个函数,而不是必须为每个离散值输入这个,还是有一些我不知道的很酷的 tidyverse 技巧来完成这个?
library(tidyverse, warn.conflicts = FALSE, quietly = TRUE)
library(broom)
mtcars_new <- rownames_to_column(mtcars, "car")
cyl_4 <- filter(mtcars_new, cyl == 4) %>% select(4:8) %>% map(~tidy(summary(.x))) %>% do.call(rbind,.) %>% rownames_to_column(var = "var")
cyl_6 <- filter(mtcars_new, cyl == 6) %>% select(4:8) %>% map(~tidy(summary(.x))) %>% do.call(rbind,.) %>% rownames_to_column(var = "var")
cyl_8 <- filter(mtcars_new, cyl == 8) %>% select(4:8) %>% map(~tidy(summary(.x))) %>% do.call(rbind,.) %>% rownames_to_column(var = "var")
bind_rows(list("4" = cyl_4, "6" = cyl_6, "8" = cyl_8), .id = "cyl")
#> cyl var minimum q1 median mean q3 maximum
#> 1 4 disp 71.100 78.8500 108.000 105.136364 120.65000 146.700
#> 2 4 hp 52.000 65.5000 91.000 82.636364 96.00000 113.000
#> 3 4 drat 3.690 3.8100 4.080 4.070909 4.16500 4.930
#> 4 4 wt 1.513 1.8850 2.200 2.285727 2.62250 3.190
#> 5 4 qsec 16.700 18.5600 18.900 19.137273 19.95000 22.900
#> 6 6 disp 145.000 160.0000 167.600 183.314286 196.30000 258.000
#> 7 6 hp 105.000 110.0000 110.000 122.285714 123.00000 175.000
#> 8 6 drat 2.760 3.3500 3.900 3.585714 3.91000 3.920
#> 9 6 wt 2.620 2.8225 3.215 3.117143 3.44000 3.460
#> 10 6 qsec 15.500 16.7400 18.300 17.977143 19.17000 20.220
#> 11 8 disp 275.800 301.7500 350.500 353.100000 390.00000 472.000
#> 12 8 hp 150.000 176.2500 192.500 209.214286 241.25000 335.000
#> 13 8 drat 2.760 3.0700 3.115 3.229286 3.22500 4.220
#> 14 8 wt 3.170 3.5325 3.755 3.999214 4.01375 5.424
#> 15 8 qsec 14.500 16.0975 17.175 16.772143 17.55500 18.000
【问题讨论】: