【问题标题】:Summary statistics using apply family for different factor levels使用应用族对不同因子水平进行汇总统计
【发布时间】:2013-12-19 18:29:17
【问题描述】:

我正在尝试查找不同因子水平的汇总统计数据。

data.frame(apply(final_data[Company=="BPO",c(66:84)],2,summary))  

现在company 有不同的值 - 我可以针对不同的值重复该语句。我知道它可以自动化 - 使用应用系列 (ddply,tapply,sapply),但我没有做对。

【问题讨论】:

    标签: r statistics apply summary tapply


    【解决方案1】:

    您可以拆分公司,然后使用您的功能:

    spl = split(final_data, final_data$Company)
    list.of.summaries = lapply(spl, function(x) data.frame(apply(x[,66:84], 2, summary)))
    

    【讨论】:

    • 谢谢。我得到了工作的相关性。关注by(final_data[,c(66:85)],Company,function(x) cor(x))
    • 当然,或者:list.of.cor = lapply(spl, function(x) cor(x[,66:84]))
    【解决方案2】:

    您可能需要考虑使用bytapply 函数。这将允许您跳过对split 的显式调用。这是一个示例,因为您尚未提供数据。

    # some example data
    set.seed(1)
    df <- data.frame(x = as.factor(rep(1:5, each=10)), y1=rnorm(50), y2=rnorm(50))
    
    # with `tapply`
    a <- do.call(rbind, sapply(df[,2:3], function(i) tapply(i, df$x, summary)))
    # with `by`
    a <- do.call(rbind, sapply(df[,2:3], function(i) by(i, df$x, summary)))
    

    这是输出:

    > a
             Min.  1st Qu.    Median    Mean 3rd Qu.   Max.
     [1,] -0.8356 -0.54620  0.256600  0.1322  0.5537 1.5950
     [2,] -2.2150 -0.03775  0.491900  0.2488  0.9132 1.5120
     [3,] -1.9890 -0.39760  0.009218 -0.1337  0.5694 0.9190
     [4,] -1.3770 -0.32140 -0.056560  0.1207  0.6693 1.3590
     [5,] -0.7075 -0.23120  0.126100  0.1341  0.6619 0.8811
     [6,] -1.1290 -0.55080  0.103000  0.1435  0.5268 1.9800
     [7,] -1.8050 -0.02243  0.171000  0.4512  1.2720 2.4020
     [8,] -1.2540 -0.67980 -0.221100 -0.2477  0.2372 0.6107
     [9,] -1.5240 -0.26190  0.300000  0.1274  0.5380 1.1780
    [10,] -1.2770 -0.56560  0.042540  0.1123  1.0450 1.5870
    

    您可能还想将其与变量和级别名称结合起来以了解发生了什么:

    b <- expand.grid(level=levels(df$x),var=names(df[,2:3]))
    cbind(a,b)
    

    这是它的输出:

    > cbind(b,a)
       level var    Min.  1st Qu.    Median    Mean 3rd Qu.   Max.
    1      1  y1 -0.8356 -0.54620  0.256600  0.1322  0.5537 1.5950
    2      2  y1 -2.2150 -0.03775  0.491900  0.2488  0.9132 1.5120
    3      3  y1 -1.9890 -0.39760  0.009218 -0.1337  0.5694 0.9190
    4      4  y1 -1.3770 -0.32140 -0.056560  0.1207  0.6693 1.3590
    5      5  y1 -0.7075 -0.23120  0.126100  0.1341  0.6619 0.8811
    6      1  y2 -1.1290 -0.55080  0.103000  0.1435  0.5268 1.9800
    7      2  y2 -1.8050 -0.02243  0.171000  0.4512  1.2720 2.4020
    8      3  y2 -1.2540 -0.67980 -0.221100 -0.2477  0.2372 0.6107
    9      4  y2 -1.5240 -0.26190  0.300000  0.1274  0.5380 1.1780
    10     5  y2 -1.2770 -0.56560  0.042540  0.1123  1.0450 1.5870
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多