使用dtplyr时,按变量使用组_的函数输入中的列

使用dtplyr时,按变量使用组_的函数输入中的列,r,dplyr,dtplyr,R,Dplyr,Dtplyr,当尝试使用dtplyr按组总结列时,分组似乎不起作用。由于group变量是我函数的一个输入,因此我尝试使用group_by_u只接收错误消息 数据: df%as.data.table() 科尔斯df 身份证年份代码dv1 d2 1: 1 2014 1 1 2 2: 1 2015 2 2 3 3: 1 2016 2 3 4 4: 2 2015 1 4 5 5: 2 2015 2 5 6 6: 2 2016 3 6

当尝试使用dtplyr按组总结列时,分组似乎不起作用。由于group变量是我函数的一个输入,因此我尝试使用group_by_u只接收错误消息

数据:

df%as.data.table()
科尔斯df
身份证年份代码dv1 d2
1:  1 2014    1   1  2
2:  1 2015    2   2  3
3:  1 2016    2   3  4
4:  2 2015    1   4  5
5:  2 2015    2   5  6
6:  2 2016    3   6  7
7:3 NA 37 8
8:3 NA 4 8 9
9:  3 2016    5   9 10
功能:

for(i in seq_along(columns)) {
 sub1 <- df %>% 
   select("id", columns[i], group) %>%
   group_by(group) %>%
   summarise(mean=mean(.data[[columns[i]]], na.rm=T), sd=sd(.data[[columns[i]]], na.rm=T)) %>%
   ungroup() %>%
   as_tibble() 
 print(sub1)
}
}

test(data=df, columns=cols, group="year")

# A tibble: 1 x 3
  group  mean    sd
  <chr> <dbl> <dbl>
1 year      5  2.74
# A tibble: 1 x 3
  group  mean    sd
  <chr> <dbl> <dbl>
1 year      6  2.74
for(沿(列)顺序排列的i){
低于1%
选择(“id”,列[i],组)%>%
分组依据(分组)%>%
总结(平均值=平均值(.data[[columns[i]],na.rm=T),sd=sd(.data[[columns[i]],na.rm=T))%>%
解组()%>%
作为_tible()
打印(sub1)
}
}
测试(数据=df,列=cols,group=“year”)
#一个tibble:1 x 3
组平均标准差
1年5 2.74
#一个tibble:1 x 3
组平均标准差
1年6 2.74

这里有一个
reprex
,我想它和你要找的东西很相似。这不是一直以来最性感的解决方案,但它会奏效:

库(tidyverse)
f%
分组依据(!!sym(分组变量))%>%
汇总(N=N())
}
f(“物种”)
#>#tibble:3 x 2
#>物种N
#> *       
#>1刚毛50
#>2彩色50
#>3弗吉尼亚州50

由(v1.0.0)创建于2021-03-17我们可以使用
.data

f<- function(dat, grouping_var) {
     dat %>%
         group_by(.data[[grouping_var]]) %>%
         summarise(N = n())
  }
f<- function(dat, grouping_var) {
     dat %>%
         group_by(.data[[grouping_var]]) %>%
         summarise(N = n())
  }
f(iris, "Species")
# A tibble: 3 x 2
#  Species        N
#* <fct>      <int>
#1 setosa        50
#2 versicolor    50
#3 virginica     50
library(purrr)
map(cols, dat = df, .f = f)