首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按因子水平对多个变量的特定汇总统计

问按因子水平对多个变量的特定汇总统计
EN

Stack Overflow用户
提问于 2017-10-03 02:51:43
回答 1查看 964关注 0票数 0

我试图得到的平均值,sd,最小,最大,和范围的mpg,价格,重量,和修理记录分组的两个因素水平(国内和国外)在一个变量名为外资。我遇到了许多例子,这些例子展示了如何获得一个统计数据,比如多个变量上的平均值,或者如何获得一个变量的多个统计信息,这些统计数据按两个因素级别分组。但是,对于开发上面所述的表,我没有发现任何特别有用的东西。

我已经尝试了很多东西,看起来ddply可能是我应该使用的东西。我认为应该类似于ddply(df,[column I want to use as factor level], mean=mean(value),...,但不确定语法。谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-10-03 03:01:14

我倾向于采用tidyverse方法,例如:

代码语言:javascript
复制
library(tibble)
library(dplyr)

mtcars %>%
  rownames_to_column() %>%
  as_tibble() %>%
  group_by(rowname) %>%
  summarise_all(
    funs(mean = mean, median = median, min = min, max = max, sd = sd)
  )

# # A tibble: 32 x 56
#              rowname mpg_mean cyl_mean disp_mean hp_mean drat_mean wt_mean qsec_mean
#                <chr>    <dbl>    <dbl>     <dbl>   <dbl>     <dbl>   <dbl>     <dbl>
# 1        AMC Javelin     15.2        8     304.0     150      3.15   3.435     17.30
# 2 Cadillac Fleetwood     10.4        8     472.0     205      2.93   5.250     17.98
# 3         Camaro Z28     13.3        8     350.0     245      3.73   3.840     15.41
# 4  Chrysler Imperial     14.7        8     440.0     230      3.23   5.345     17.42
# 5         Datsun 710     22.8        4     108.0      93      3.85   2.320     18.61
# 6   Dodge Challenger     15.5        8     318.0     150      2.76   3.520     16.87
# 7         Duster 360     14.3        8     360.0     245      3.21   3.570     15.84
# 8       Ferrari Dino     19.7        6     145.0     175      3.62   2.770     15.50
# 9           Fiat 128     32.4        4      78.7      66      4.08   2.200     19.47
# 10         Fiat X1-9     27.3        4      79.0      66      4.08   1.935     18.90

...or使用summarise_if和is.numeric谓词

代码语言:javascript
复制
library(dplyr)

starwars %>%
  group_by(homeworld) %>%
  summarise_if(
    is.numeric,
    funs(mean = mean, median = median, min = min, max = max, sd = sd)
  )

# # A tibble: 49 x 16
#        homeworld height_mean mass_mean birth_year_mean height_median mass_median birth_year_median height_min
#            <chr>       <dbl>     <dbl>           <dbl>         <dbl>       <dbl>             <dbl>      <dbl>
# 1       Alderaan    176.3333        NA              NA           188          NA                NA        150
# 2    Aleen Minor     79.0000      15.0              NA            79        15.0                NA         79
# 3         Bespin    175.0000      79.0              37           175        79.0                37        175
# 4     Bestine IV    180.0000     110.0              NA           180       110.0                NA        180
# 5 Cato Neimoidia    191.0000      90.0              NA           191        90.0                NA        191
# 6          Cerea    198.0000      82.0              92           198        82.0                92        198
# 7       Champala    196.0000        NA              NA           196          NA                NA        196
# 8      Chandrila    150.0000        NA              48           150          NA                48        150
# 9   Concord Dawn    183.0000      79.0              66           183        79.0                66        183
# 10      Corellia    175.0000      78.5              25           175        78.5                25        170

如果有必要,...you总是可以向函数中添加参数,如na.rm,如mean(., na.rm = TRUE)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46536524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档