如果我的分组变量是一个因素,如何生成按组汇总统计数据?

2024-04-08

假设我想获得数据集的一些汇总统计数据mtcars(基础 R 版本 2.12.1 的一部分)。 下面,我根据汽车的发动机气缸数对汽车进行分组,并取其余变量的每组平均值mtcars.

> str(mtcars)
'data.frame': 32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
> ddply(mtcars, .(cyl), mean)
       mpg cyl     disp        hp     drat       wt     qsec        vs        am     gear
1 26.66364   4 105.1364  82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909
2 19.74286   6 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143
3 15.10000   8 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714
      carb
1 1.545455
2 3.428571
3 3.500000

但是,如果我的分组变量恰好是一个因素,事情就会变得更加棘手。ddply()对每个因素级别发出警告, 因为一个人无法接受mean()的一个因素。

> mtcars$cyl <- as.factor(mtcars$cyl)
> str(mtcars)
'data.frame': 32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
> ddply(mtcars, .(cyl), mean)
       mpg cyl     disp        hp     drat       wt     qsec        vs        am     gear
1 26.66364  NA 105.1364  82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909
2 19.74286  NA 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143
3 15.10000  NA 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714
      carb
1 1.545455
2 3.428571
3 3.500000
Warning messages:
1: In mean.default(X[[2L]], ...) :
  argument is not numeric or logical: returning NA
2: In mean.default(X[[2L]], ...) :
  argument is not numeric or logical: returning NA
3: In mean.default(X[[2L]], ...) :
  argument is not numeric or logical: returning NA
>

所以,我想知道我是否只是以错误的方式生成汇总统计数据。

通常如何生成按因素或按组汇总统计数据的数据结构(如平均值、标准差等)?我应该使用除ddply()?如果我可以使用ddply(),我该怎么做才能避免在尝试取分组因子的平均值时产生的错误?


Use numcolwise(mean): the numcolwise函数将其参数(函数)转换为仅对数字列进行操作的函数(并忽略分类/因子列)。

  > ddply(mtcars, .(cyl), numcolwise(mean))

      cyl      mpg     disp        hp     drat       wt     qsec        vs
    1   4 26.66364 105.1364  82.63636 4.070909 2.285727 19.13727 0.9090909
    2   6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286
    3   8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000
             am     gear     carb
    1 0.7272727 4.090909 1.545455
    2 0.4285714 3.857143 3.428571
    3 0.1428571 3.285714 3.500000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我的分组变量是一个因素,如何生成按组汇总统计数据? 的相关文章

  • 订购“混合”向量(带有字母的数字)

    我怎样才能订购像这样的矢量 c 7 10a 10b 10c 8 9 11c 11b 11a 12 gt alph in alph 1 7 8 9 10a 10b 10c 11a 11b 11c 12 并用它对 data frame 进行排序
  • 将树形图导出为 R 中的表格

    我想将 hclust dendrogram 从 R 导出到数据表中 以便随后将其导入到另一个 自制 软件中 str unclass fit 提供了树状图的文本概述 但我正在寻找的实际上是一个数字表 我查看了 Bioconductor ctc
  • 根据另一行中另一列的值将列添加到数据框

    我正在寻找我的具体问题的答案 但没有找到结论 我找到了这个 根据其他列的值将列添加到数据框 https stackoverflow com questions 26067161 add column to data frame based
  • 如何在 R 中连接数字列?

    我在 R 的数据框中有三列 x y 和 z 坐标 我想将其连接成一个 xyz 值 如下所示 我尝试过使用 collapse 和 sep 粘贴 但遇到了麻烦 我认为这与文本与数字变量有关 I have x y z 1 2 3 2 3 2 3
  • 如何在Shiny中实时刷新sliderInput()(不仅仅是滑动结束时)?

    抱歉 不知道问题说得够清楚吗 在Shiny中 滑块每次滑动时 只会计算并更新滑动结束时的值 如果我将它的值链接到图表上 滑动时看起来不太平滑 图表只会在释放鼠标时或几秒钟后发生变化 而不是随着滑动而不断变化 使用滑动条改变y 图表中红点的位
  • 如何在 Ubuntu 9.10 上安装 R 软件包 rgl? [复制]

    这个问题在这里已经有答案了 可能的重复 安装 rgl 时出现问题 https stackoverflow com questions 7473067 problem installing rgl 我正在尝试在 Ubuntu 9 10 上安装
  • 将鼠标悬停在 R 中的传单时弹出?

    我的传单地图看起来像这样 library sp library leaflet circleFun lt function center c 0 0 diameter 1 npoints 100 r diameter 2 tt lt seq
  • R中特定小时和月份的数据框中的平均值

    我一直在网上搜索 但还没有找到解决这个可能很简单的问题的方法 这是使用库 xts 的半小时数据 library xts data xts lt as xts 1 nrow data as POSIXct 2007 08 24 17 30 0
  • R 图在从 r 变量读取文本时使用 html 进行格式化

    我正在使用 R 包绘图器创建流程图 为了获得所需的格式 粗体 项目符号 左对齐 我可以在 html 中编写节点标签 但是 我还想通过调用 R 中的变量来填充一些文本 但我不知道如何同时执行这两项操作 html 格式化 调用 R 变量 在此代
  • R: Knit 给出 SQL-chunk 错误

    我想编织 R markdown 的输出 其中包括几个 SQL 块 但是 如果我开始编织 就会收到错误消息 Line 65 Error in eval expr envir enclos object pp dataset not found
  • 在 R 中将多个回归表输出到 Word 文档的多个页面中

    我的目标是创建一个多页 Microsoft Word 文档 在连续页面上包含许多格式化回归表输出 理想情况下 这可以使用 R Markdown 来完成 我很幸运地使用Word在Word中制作了格式良好的回归表sjPlot tab model
  • R 中矩阵的逆

    我想知道你推荐的计算矩阵逆的方法是什么 我找到的方法似乎并不令人满意 例如 gt c rbind c 1 1 4 c 1 4 1 gt c 1 2 1 1 00 0 25 2 0 25 1 00 gt inv c Error could n
  • 如何将零件逐一添加到闪亮的图表中

    我正在尝试为我的统计课程制作一些演示 除此之外 我想展示所涉及的逐步过程 对于我正在寻找的简化示例 请考虑以下小玩具 R 函数 toyPlot lt function x lt 1 100 100 y lt x rnorm 100 0 0
  • R mapbox / 带有动画和 shapefile 的绘图

    我正在制作一个动画 显示地图上绘制的空间数据 并带有基于日期的动画滑块 除此之外 我想绘制一个随时间变化的形状文件 我的动画在没有 shapefile 的情况下也能正常工作 绘制标记和形状文件不会显示形状文件 似乎是两者之间的某种脱节add
  • 控制绘图中 x 轴上出现哪些刻度线/标签?

    我想控制 X 轴上显示的刻度线 以下代码将刻度线放置在 5 的序列中 位于 5 10 15 30 library plotly df lt data frame x 1 30 y sample 100 300 size 30 replace
  • 从 Rcpp C++ 函数获取 r 函数参数

    我在 R 端定义了一个函数 如下所示 foo lt function arg1 arg2 arg3 以及使用 Rcpp 的 C 函数 该函数获取全局环境并实例化 R 函数以从该函数执行它 这是代码 namespace Rcpp void m
  • 如何在data.table中编写累积计算

    顺序累积计算 我需要进行时间序列计算 其中每行计算的值取决于上一行计算的结果 我希望能够利用data table 实际问题是水文模型 累积水平衡计算 在每个时间步长增加降雨量 并减去径流和蒸发作为当前水量的函数 该数据集包括不同的流域和场景
  • data.frame 不会破坏列名

    有没有办法使用 data frame 而不破坏列名 我有以下结构 Canon PowerShot 1 9 997803e 01 9 997318e 01 3 327920e 01 3 327920e 01 9 988220e 01 6 4
  • R 笔记本:opts_chunk 没有效果

    我正在开发我的第一台 R 笔记本 除了一个问题之外 它运行得很好 我想成为我内联输出的数字 r realbignumber 以逗号作为分隔符且最多 2 位小数 123 456 789 12 为了实现这一目标 我在文档的开头添加了一个块 其中
  • rbind 命名向量到不同长度的矩阵

    我正在尝试将命名向量绑定到矩阵上 命名向量的长度与矩阵不同 gt m lt matrix data c 1 2 3 nrow 1 ncol 3 dimnames list c c column 1 column 2 column 3 gt

随机推荐