【问题标题】:how to do the summary statistics in one time in R [duplicate]如何在R中一次性进行汇总统计[重复]
【发布时间】:2019-12-24 17:58:24
【问题描述】:

如何在 R 中一次性获得 p、q、r 列的“观察次数、平均值、标准差、最小值、1percentile、中位数、99 percentile、最大值”?我知道summary() 函数可以这样做,但结果没有标准偏差和 99 个百分位数。 我还需要学习如何使输出具有良好的形状。 以下是我的数据:

Year    p   q    r    s   t
2003   3    5    5    4   7
2004   4    7    2    5   9
2005   5    1    7    5   8
2006   5    3    5    6   4
2007   6    1    9    7   1

【问题讨论】:

  • 你能给我举个例子来说明如何用 R 编写代码吗?谢谢。
  • sapply(data[,2:4], function(x) quantile(x, probs=c(0,0.01,0.5,0.99,1)))
  • @G5W,发表您的评论作为答案?

标签: r statistics summary


【解决方案1】:

您可以使用quantile 获得大部分信息 - 最大值、最小值、1%、99% 和中值 (=50%)。这忽略了平均值和标准差。

首先,让我在您的一个专栏中使用quantile

quantile(data[,'p'], probs=c(0,0.01,0.5,0.99,1))
  0%   1%  50%  99% 100% 
3.00 3.04 5.00 5.96 6.00 

要同时在 p、q 和 r 上执行此操作,您需要使用 sapply 之类的东西

sapply(data[,2:4], function(x) quantile(x, probs=c(0,0.01,0.5,0.99,1)))
        p    q    r
0%   3.00 1.00 2.00
1%   3.04 1.00 2.12
50%  5.00 3.00 5.00
99%  5.96 6.92 8.92
100% 6.00 7.00 9.00

如果您想获取其他指标,可以通过编写自定义函数来实现。

F = function(x) c(quantile(x, probs=c(0,0.01,0.5,0.99,1)),
    mean=mean(x), sd=sd(x))

sapply(data[,2:4], F)
            p        q        r
0%   3.000000 1.000000 2.000000
1%   3.040000 1.000000 2.120000
50%  5.000000 3.000000 5.000000
99%  5.960000 6.920000 8.920000
100% 6.000000 7.000000 9.000000
mean 4.600000 3.400000 5.600000
sd   1.140175 2.607681 2.607681

【讨论】:

  • 好的,非常感谢。但是我仍然需要平均值和标准差。不能一次性完成吗?
  • 我问问题的时候能不能告诉我如何调整格式?我希望它看起来像我的照片。
  • 很抱歉再次打扰您。但是你知道如何在答案中每行保留5位小数吗?就像“sd”行一样,应该是:1.14018 2.60768 2.60768
  • @XUNZHANG 试试options(digits=6)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多