相关疑难解决方法(0)

dplyr :: group_by_,带有几个变量名的字符串输入

我正在编写一个函数,要求用户在函数调用中定义一个或多个分组变量.然后使用dplyr对数据进行分组,如果只有一个分组变量,它会按预期工作,但我还没有想出如何使用多个分组变量.

例:

x <- c("cyl")
y <- c("cyl", "gear")
dots <- list(~cyl, ~gear)

library(dplyr)
library(lazyeval) 

mtcars %>% group_by_(x)             # groups by cyl
mtcars %>% group_by_(y)             # groups only by cyl (not gear)
mtcars %>% group_by_(.dots = dots)  # groups by cyl and gear, this is what I want.
Run Code Online (Sandbox Code Playgroud)

我试着变成ydots使用相同:

mtcars %>% group_by_(.dots = interp(~var, var = list(y)))
#Error: is.call(expr) || is.name(expr) || is.atomic(expr) is not TRUE
Run Code Online (Sandbox Code Playgroud)

如何使用> 1个变量名的用户定义输入字符串(如y示例中所示)使用dplyr对数据进行分组?

(这个问题在某种程度上与这个有关,但在那里没有回答.)

r dplyr

23
推荐指数
1
解决办法
1万
查看次数

将用户规范作为参数传递给Shiny中的dplyr

我正在编写一个新的Shiny应用程序,我想通过使用dplyr命令进行数据操作来保持在Hadleyverse中.我希望Shiny打印一个表格,根据用户可以选择的变量仅显示前3个观察结果.例如,一个用户可能希望在收到的奖励数量方面看到前三名员工,而另一个用户希望在获得的奖励积分数量方面看到前三名.

在我最近的尝试中,我有这个为ui.R:

library(shiny)
shinyUI(fluidPage(
verticalLayout(
tableOutput("tbl"),
selectInput("top3", label = h4("Quantity"), 
  choices = list("Number of awards" = "NumberOfAwards", 
  "Total points awarded" = "TotalAwarded")), 
tableOutput("t3")
)))
Run Code Online (Sandbox Code Playgroud)

这对于s​​erver.R:

library(dplyr)
library(shiny)
shinyServer(function(input, output) {
employeestats <- read.table(header=TRUE, text='
Employee  NumberOfAwards TotalAwarded
Al        3              10
Betty     6              20
Chuck     2              5
Donna     4              15
Ed        0              0
')  
output$tbl <- renderTable({ 
employeestats
},include.rownames=TRUE) 
datasetInput <- reactive({employeestats})
output$t3 <- renderTable({ 
head(datasetInput() %>% arrange(desc(input$top3)),n=3)  
},include.rownames=TRUE)
})
Run Code Online (Sandbox Code Playgroud)

在Shiny之外,命令

head(employeestats %>% arrange(desc(NumberOfAwards)),n=3)
Run Code Online (Sandbox Code Playgroud)

给出前三名获奖者的答案.在Shiny中,完整的表和选择框打印时没有Top 3表,我收到消息"eval中的错误(替换(expr),envir,enclos):不能安排类'NULL'的列".我知道这与使用非标准函数的Shiny和dplyr有关,如果R看到NumberOfAwards或字符串"NumberOfAwards",它可能会有所不同.我尝试过像deparse(substitute())这样的东西,使用数字来表示要排列的列等,但没有成功.这不必详细说明; 例如,我不关心第三名的关系.

有任何想法吗?谢谢您的帮助.

r shiny dplyr

7
推荐指数
2
解决办法
4440
查看次数

标签 统计

dplyr ×2

r ×2

shiny ×1