首页 文章

总结dplyr中的值 - 崩溃RStudio

提问于
浏览
3

dplyr 可以在 data.frame 上执行链式 summarise 操作吗?

我的data.frame有以下结构:

data_df = tbl_df(data)    
data_df %.%
        group_by(col_1) %.%
        summarise(number_of= length(col_2)) %.%
        summarise(sum_of = sum(col_3))

这会导致RStudio遇到 fatal error - R Session Aborted 消息

通常使用 plyr 我会毫无问题地包含这些 summarise 函数 .

UPDATE

数据是here.

代码是:

library(dplyr)

orth <- read.csv('orth0106.csv')
orth_df = tbl_df(orth)


orth_df %.%
    group_by(Hospital) %.%
    summarise(Procs = length(Procedure)) %.%
    summarise(SSIs = sum(SSI))

1 回答

  • 10

    我可以在运行RStudio 0.97.551的Windows 7机器上重现该错误

    这可能是因为你正在调用 summarise 并将其链接到那些不存在的东西上 . 您可以 summarise 使用2个不同的列,就像我在这里所做的那样 .

    url <- "https://raw.github.com/johnmarquess/some.data/master/orth0106.csv"
    
    library(dplyr)
    
    orth <- read.csv(url)
    orth_df <- tbl_df(orth)
    
    
    orth_df %.%
        group_by(Hospital) %.%
        summarise(Procs = length(Procedure), SSIs = sum(SSI))
    
    ## Source: local data frame [18 x 3]
    ## 
    ##    Hospital Procs SSIs
    ## 1         A   865   80
    ## 2         B  1069   38
    ## 3         C   796   24
    ## 4         D   891   35
    ## 5         E   997   39
    ## 6         F   550   30
    ## 7         G  2598  128
    ## 8         H   373   27
    ## 9         I  1079   70
    ## 10        J   714   30
    ## 11        K   477   30
    ## 12        L   227    2
    ## 13        M   125    6
    ## 14        N   589   38
    ## 15        O   292    3
    ## 16        P   149    9
    ## 17        Q  1984   52
    ## 18        R   351   13
    

    在任何情况下,这似乎是一个RStudio或 dplyr 错误 . 我会向哈德利提出一个问题,因为他可能会关心这两种方式 . https://github.com/hadley/dplyr/issues

    EDIT 这(你的第一个电话)也会导致rgui(windows)和终端崩溃:

    R version 3.0.2 (2013-09-25)
    Platform: i386-w64-mingw32/i386 (32-bit)
    

    这表明Hadley和Romain想要了解的问题是_2848333 .

    为了得到我的第一点,我们运行:

    orth_df %.%
        group_by(Hospital) %.%
        summarise(Procs = length(Procedure))
    
    Source: local data frame [18 x 2]
    
       Hospital Procs
    1         A   865
    2         B  1069
    3         C   796
    4         D   891
    5         E   997
    6         F   550
    7         G  2598
    8         H   373
    9         I  1079
    10        J   714
    11        K   477
    12        L   227
    13        M   125
    14        N   589
    15        O   292
    16        P   149
    17        Q  1984
    18        R   351
    

    %.% summarise(SSIs = sum(SSI)) 应该在哪里找到 SSI

    所以你认为发生的链接失败了 . 据我所知 %.%ggplot2 的工作方式不完全相似但相似 . 在 ggplot2 中,一旦您在初始映射中传递数据,您可以稍后访问它 . 这里% . %似乎修改 grab 左块并对其进行操作如下:

    enter image description here

    所以你 grab 了:

    Hospital Procs
    1         A   865
    2         B  1069
    3         C   796
    .
    .
    .
    17        Q  1984
    18        R   351
    

    当你使用 %.% summarise(SSIs = sum(SSI)) 并且没有 SSI 时 . 所以想到的类比是serial vs. parallel wiring Christmas lights . %.% = serial ggplot() + = parallel . 这是一个非程序员's understanding of things and the R gurus may come and tell me I' m愚蠢,但现在_2848348已经得到了 .

相关问题