gpt4 book ai didi

r - 使用 dtplyr 时,将函数输入中的列用于 group_by 变量

转载 作者:行者123 更新时间:2023-12-04 07:56:30 27 4
gpt4 key购买 nike

尝试使用 dtplyr 按组汇总列时,分组似乎不起作用。由于组变量是我的函数的输入,我尝试使用 group_by_ 只接收错误消息。
数据:

df <- data.frame(
id=c(1,1,1,2,2,2,3,3,3),
year=c(2014, 2015, 2016, 2015, 2015, 2016, NA, NA, 2016),
code=c(1,2,2, 1,2,3, 3,4,5),
dv1=1:9,
dv2=2:10
) %>% as.data.table()

cols <- c("dv1", "dv2")

> df
id year code 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 3 7 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

最佳答案

我们可以使用 .data

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

使用 OP 的示例数据
library(purrr)
map(cols, dat = df, .f = f)

关于r - 使用 dtplyr 时,将函数输入中的列用于 group_by 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66679970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com