我正在尝试使用粘贴命令,以便将字符串的某些部分从dyply粘贴到命令group_by中。这看起来像是没有粘贴的正常代码。
library(dplyr)
DATA1<-DATA%>%
dplyr::group_by(id_n,gross_income)%>%
dplyr::summarize(gross_i=sum(gross_i)
所以现在我想使用粘贴命令,并尝试使用这行代码。
query_type1<-"id_n,gross_income"
下一步是在上面的代码中实现这行代码。
DATA1<-DATA%>%
dplyr::group_by(query_type1)%>%
dplyr::summarize(gross_i=sum(gross_i)
但不幸的是,这并没有给我带来好的结果。有人能帮我修复这行代码吗?
像这样尝试
library(tidyverse)
gr <- syms(c("vs", "am"))
mtcars %>%
group_by(!!!gr) %>%
summarise(sum_mpg = sum(mpg))
#> `summarise()` regrouping output by 'vs' (override with `.groups` argument)
#> # A tibble: 4 x 3
#> # Groups: vs [2]
#> vs am sum_mpg
#> <dbl> <dbl> <dbl>
#> 1 0 0 181.
#> 2 0 1 118.
#> 3 1 0 145.
#> 4 1 1 199.
由reprex包于2021-01-12创建(v0.3.0(
另一个解决方案是在tidyverse中使用rlang
包。CCD_ 2";撤资";表达式,这意味着它可以接受值(不需要加引号(,并返回描述如何生成值的R表达式。称为"CCD_;未标记的拼接";,获取一个参数列表,并将它们插入!!!
的位置
library(tidyverse)
gvars <- exprs(gear, carb)
mtcars %>%
group_by(!!!gvars)
正如其他人已经建议的那样,将列名作为向量,而不是一个逗号分隔的字符串。
query_type1<- c("id_n","gross_income")
然后可以在group_by
:中使用across
library(dplyr)
DATA%>%
group_by(across(query_type1)) %>%
summarize(gross_i=sum(gross_i)