【问题标题】:odd behaviour of group_by function in dplyr in R Studio Version 0.98.1087R Studio 版本 0.98.1087 中 dplyr 中 group_by 函数的奇怪行为
【发布时间】:2015-03-20 04:56:59
【问题描述】:

我是 R 新手,在 RStudio 中处理数据框“damageData”。数据框简要总结:

>str(damageData)  
'data.frame':    902297 obs. of  9 variables:
  $ EVTYPE    : Factor w/ 985 levels "   HIGH SURF ADVISORY",..: 834 834 834 834 834 834 834 834 834 834 ...
  $ FATALITIES: num  0 0 0 0 0 0 0 0 1 0 ...
  $ INJURIES  : num  15 0 2 2 2 6 1 0 14 0 ...
  $ PROPDMG   : num  25 2.5 25 2.5 2.5 2.5 2.5 2.5 25 25 ...
  $ PROPDMGEXP: num  1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 ...
  $ CROPDMG   : num  0 0 0 0 0 0 0 0 0 0 ...
  $ CROPDMGEXP: num  0 0 0 0 0 0 0 0 0 0 ...
  $ Property  : num  25000 2500 25000 2500 2500 2500 2500 2500 25000 25000 ...
  $ Crops     : num  0 0 0 0 0 0 0 0 0 0 ...

> head(damageData, 10)
      EVTYPE FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP
 1  TORNADO          0       15    25.0       1000       0          0
 2  TORNADO          0        0     2.5       1000       0          0
 3  TORNADO          0        2    25.0       1000       0          0
 4  TORNADO          0        2     2.5       1000       0          0
 5  TORNADO          0        2     2.5       1000       0          0
 6  TORNADO          0        6     2.5       1000       0          0
 7  TORNADO          0        1     2.5       1000       0          0
 8  TORNADO          0        0     2.5       1000       0          0
 9  TORNADO          1       14    25.0       1000       0          0
 10 TORNADO          0        0    25.0       1000       0          0
    Property Crops
 1     25000     0
 2      2500     0
 3     25000     0
 4      2500     0
 5      2500     0
 6      2500     0
 7      2500     0
 8      2500     0
 9     25000     0
 10    25000     0

我想按 EVTYPE 对数据框进行分组。当我使用 dplyr 包和 'group_by(EVTYPE)' 后跟 summarise(TotalInjuries=sum(INJURIES), TotalFatalities=sum(FATALITIES)) 时,数据框不会按 EVTYPE 分组。相反,我得到以下结果:

TotalInjures TotalFatalities 1 140528 15145

我尝试将 EVTYPE 从“因子”更改为“字符”,但仍然得到相同的结果。请帮我解决这个奇怪的问题!

【问题讨论】:

  • 你有可重现的例子吗?

标签: r group-by dplyr


【解决方案1】:

如果没有可重复的示例,很难准确地说出发生了什么。您可能错误地使用了 dplyr 语法? 见下文:

damageData <- data.frame(
  EVTYPE = factor(c("Y","N","Y","N","Y","N","Y","N","Y","N")),
  FATALITIES = c(0,0,0,0,0,0,0,0,1,0),
  INJURIES = c(15,0,2,2,2,6,1,0,14,0))

str(damageData)

library(dplyr)

damageData %>%
  group_by( EVTYPE ) %>%
  summarize( TotalInjuries=sum(INJURIES),
             TotalFatalities=sum(FATALITIES))

我得到以下信息

Source: local data frame [2 x 3]  

  EVTYPE TotalInjuries TotalFatalities  
1      N             8               0  
2      Y            34               1  

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多