Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对多个列表进行平均的更有效方法_R - Fatal编程技术网

R 对多个列表进行平均的更有效方法

R 对多个列表进行平均的更有效方法,r,R,我有一些数据,我使用rsample包创建滚动窗口(我在这里使用iris数据集)。rolling_iris数据集包含许多列表 我想计算每个列表的min、max、mean和sd。也就是说,在split1中,计算前4列的min。我最初是通过在拆分上映射并使用pivot\u longer重新排列数据,然后计算统计数据,最后使用pivot\u wide将数据恢复到原始形式。这相当慢 library(dplyr) library(purrr) iris rolling_iris <- rsample

我有一些数据,我使用
rsample
包创建滚动窗口(我在这里使用
iris
数据集)。
rolling_iris
数据集包含许多列表

我想计算每个列表的
min
max
mean
sd
。也就是说,在
split
1中,计算前4列的
min
。我最初是通过在拆分上映射并使用
pivot\u longer
重新排列数据,然后计算统计数据,最后使用
pivot\u wide
将数据恢复到原始形式。这相当慢

library(dplyr)
library(purrr)

iris
rolling_iris <- rsample::rolling_origin(iris, initial = 10, assess = 1, cumulative = FALSE, skip = 0)

rolling_iris_statistics <- map(rolling_iris$splits, ~analysis(.x) %>%
      pivot_longer(cols = 1:4) %>%
      mutate(
        min = min(value),
        max = max(value),
        mean = mean(value),
        sd = sd(value)
      ) %>% 
        group_by(name) %>% 
        mutate(rowID = row_number()) %>% 
        pivot_wider(names_from = name, values_from = value)
    )
其他:

rolling_iris_analysis <- map(rolling_iris$splits, ~analysis(.x))
rolling_iris_assessment <- map(rolling_iris$splits, ~assessment(.x))

将下面的代码子集滚动到每个子数据帧中。因此,
rolling\u iris\u dfs
是一个数据帧列表。然后,您可以迭代每个数据帧并计算统计数据

rolling_iris_dfs <- map(seq(1, length(rolling_iris[[1]])), ~rolling_iris[[1]][[.x]]$data) 

rolling_iris_stats <- map(rolling_iris_dfs, ~analysis(.x) %>%
      pivot_longer(cols = 1:4) %>%
      mutate(
        min = min(value),
        max = max(value),
        mean = mean(value),
        sd = sd(value)
      ) %>% 
        group_by(name) %>% 
        mutate(rowID = row_number()) %>% 
        pivot_wider(names_from = name, values_from = value)
    )
rolling\u iris\u dfs%
变异(
最小值=最小值,
最大值=最大值,
平均值=平均值(值),
sd=sd(值)
) %>% 
分组单位(名称)%>%
变异(rowID=row_number())%>%
枢轴(名称从=名称,值从=值)
)
analysis <- map(rolling_iris$splits, ~analysis(.x))
map(analysis, ~select(., c(1:4)) %>% as.matrix %>% mean())
rolling_iris_dfs <- map(seq(1, length(rolling_iris[[1]])), ~rolling_iris[[1]][[.x]]$data) 

rolling_iris_stats <- map(rolling_iris_dfs, ~analysis(.x) %>%
      pivot_longer(cols = 1:4) %>%
      mutate(
        min = min(value),
        max = max(value),
        mean = mean(value),
        sd = sd(value)
      ) %>% 
        group_by(name) %>% 
        mutate(rowID = row_number()) %>% 
        pivot_wider(names_from = name, values_from = value)
    )