gpt4 book ai didi

r - 使用 `dplyr` 找到大 tibble 的逐行均值和方差的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-05 01:05:12 25 4
gpt4 key购买 nike

我希望为数字小标题中的每一行生成一个均值和方差值。使用我现有的代码,我认为这是一个非常适合 dplyr 的解决方案,它需要几个小时才能完成大约 35 列的 50,000 行。

有没有办法使用 only dplyr 来加速这个操作?我知道 apply 和 purrr 是选项,但我很好奇在执行大量这样的计算时是否有一些关于 dplyr 的东西我忽略了。

可重现的例子:

library(tidyverse)
library(vroom)
gen_tbl(50000, cols = 40,
col_types = paste0(rep("d", 40), collapse = "")) %>%
rowwise() %>%
mutate(mean = mean(c_across()),
var = var(c_across()))

我的怀疑在于 rowwise(),但我很感兴趣是否有更细致入微的方法可以用 dplyr 解决这个问题,或者这不是 dplyr 擅长的问题。

最佳答案

似乎逐行方法的处理时间呈二次增长:

enter image description here

旋转时间越长,计算速度大约快 300 倍。对于 50k 行,下面的代码需要 1.2 秒,而 rowwise 方法需要 372 秒。

df %>%
mutate(row = row_number()) %>%
tidyr::pivot_longer(-row) %>%
group_by(row) %>%
summarize(mean = mean(value),
var = var(value)) %>%
bind_cols(df, .)

关于r - 使用 `dplyr` 找到大 tibble 的逐行均值和方差的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70841310/

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