相关疑难解决方法(0)

dplyr中的标准评估:summarise_作为字符串给出的变量

我想在一个内部引用一个未知的列名summarise.dplyr 0.3允许使用变量引用列名称中引入的标准评估函数,但是当您base在例如a中调用R函数时,这似乎不起作用summarise.

library(dplyr)

key <- "v3"
val <- "v2"
drp <- "v1"

df <- data_frame(v1 = 1:5, v2 = 6:10, v3 = c(rep("A", 3), rep("B", 2)))
Run Code Online (Sandbox Code Playgroud)

df看起来像这样:

> df
Source: local data frame [5 x 3]

  v1 v2 v3
1  1  6  A
2  2  7  A
3  3  8  A
4  4  9  B
5  5 10  B
Run Code Online (Sandbox Code Playgroud)

我想放弃v1,按v3分组,并为每个组加上v2:

df %>% select(-matches(drp)) %>% group_by_(key) %>% summarise_(sum(val, na.rm = TRUE))

Error in …
Run Code Online (Sandbox Code Playgroud)

r dplyr

48
推荐指数
5
解决办法
2万
查看次数

如何在dplyr中将多个列名称作为输入传递给group_by

我是R和dplyr包的新手.我试图将变量传递给dplyr group_by,我们可以改变/改变它.例如,在使用航班数据集时,我可以使用以下代码获取任何列(或多列)的行数:

library(nycflights13)
flights %>% group_by(origin) %>% tally()
flights %>% group_by(carrier) %>% tally()
flights %>% group_by(origin,carrier) %>% tally()
Run Code Online (Sandbox Code Playgroud)

但是如果我想传递所用列的名称,将group_by作为变量传递,则在使用多个列名时它不起作用.

group="carrier"
flights %>% group_by_(group) %>% tally()

group="origin"
flights %>% group_by_(group) %>% tally()

group=c("origin","carrier") #This does not work
flights %>% group_by_(group) %>% tally()
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助.谢谢.

r dplyr

6
推荐指数
1
解决办法
2237
查看次数

为 group_by 动态选择多列

当存在多个分组变量时,group_by 的数据屏蔽不起作用。

下面粘贴代码

grpByCols <- "model"

mpg%>%
  group_by(.data[[grpByCols]])

grpByCols <- c("model", "manufacturer")

mpg%>%
  group_by(.data[[grpByCols]])

Run Code Online (Sandbox Code Playgroud)

第一个 group_by 有效,第二个失败。

粘贴下面的运行输出

> grpByCols <- "model"
> 
> mpg%>%
+   group_by(.data[[grpByCols]])
# A tibble: 234 x 11
# Groups:   model [38]
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class  
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyeval

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

标签 统计

dplyr ×3

r ×3

tidyeval ×1