【问题标题】:dplyr group by not working in Shinydplyr group by not working in Shiny
【发布时间】:2016-04-01 14:45:14
【问题描述】:

我正在使用 R 闪亮的应用程序,因为我有两个下拉框。第一个下拉列表中填充了分类变量,第二个下拉列表中填充了数值变量。然后我将 groupby 应用于分类变量。 这是我的代码。

dataset<- dataUpload()

var1 <- as.character(input$variable1)
var2 <- as.character(input$variable2)

v$data <- dataset %>%
  group_by(dataset[,var1]) %>%
  summarize(Sum=sum(dataset[,var2])) %>%
  arrange(desc(Sum))

它给了我以下输出。

 Source: local data frame [7 x 2]

  dataset[[var1]]                Sum
           (fctr)               (int)

1     Chicken Biryani            37
2       Chicken Kabab            37
3       Chicken Kadai            37
4         Dal Makhani            37
5 Sai Bhaji and Pulav            37
6          Tava Pulav            37
7          Total Meal            37

这是 disc_quantity 变量的总和。但我想要这样的东西。

dish_quant <- df_final %>%
              group_by(dish_name) %>%
              summarize(Dish_Quantity=sum(dish_quantity)) %>%
              arrange(desc(Dish_Quantity))

        dish_name           Dish_Quantity
           (fctr)              (int)
 1       Chicken Kadai            11
 2     Chicken Biryani             9
 3         Dal Makhani             6
 4 Sai Bhaji and Pulav             3
 5          Tava Pulav             3
 6          Total Meal             3
 7       Chicken Kabab             2

我哪里做错了?我认为在 Shiny 中引用数据框的列名存在问题。

【问题讨论】:

    标签: r group-by shiny dplyr


    【解决方案1】:

    您遇到了SE/NSE 的问题。 dplyr 做的事情有点不同,通常你用列的名称来调用它,它会对其进行一些处理。但是,当将它与字符变量一起使用时,这种魔法会失效,您需要依靠标准评估。

    要修复它,您需要使用 dplyr 动词的标准评估版本(它们以 _ 结尾),并在函数调用上使用lazyeval。

    以下是使用内置 mtcars 数据集修复代码的方法:

    library(lazyeval) # so we can use interpret
    library(dplyr)
    
    var1 <- "cyl"
    var2 <- "mpg"
    mtcars %>%
        group_by_(var1) %>% #note the _
        summarize_(Sum = interp(~sum(x), x = as.name(var2))) %>% #note the _ and the interp call
        arrange(desc(Sum))
    
    Source: local data frame [3 x 2]
    
        cyl   Sum
      (dbl) (dbl)
    1     4 293.3
    2     8 211.4
    3     6 138.2
    

    【讨论】:

      猜你喜欢
      • 2017-12-13
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多