R 为嵌套的TIBLES添加分组变量

R 为嵌套的TIBLES添加分组变量,r,dplyr,tidyr,purrr,R,Dplyr,Tidyr,Purrr,这是对此的后续行动 我需要能够在新的嵌套表中按()对列进行分组。我找不到一个purrr函数来实现这一点(尽管我知道存在一个解决方案)。我需要将每个表中的_分组,以应用附加的汇总函数并适当拟合线性模型。这里的示例只是一个虚拟示例 library(tidyverse) set.seed(2) N <- 30 df <- tibble(type = rep(c("small","medium","high"), each=N/3), dummy = rep(c(1

这是对此的后续行动

我需要能够在新的嵌套表中按()对列进行分组。我找不到一个purrr函数来实现这一点(尽管我知道存在一个解决方案)。我需要将每个表中的_分组,以应用附加的汇总函数并适当拟合线性模型。这里的示例只是一个虚拟示例

library(tidyverse)
set.seed(2)
N <- 30
df <- tibble(type = rep(c("small","medium","high"), each=N/3),
             dummy = rep(c(1,5,10),each=10),
             xvals = rep(1:10,3),
             A = rnorm(N)*dummy,
             B = rnorm(N)*dummy,
             C = rnorm(N)*dummy) %>%
  mutate(type = factor(type, levels=c("small","medium","high"))) %>%
  select(-dummy) %>%
  pivot_longer(cols=-c(type,xvals), names_to="metric", values_to = "value") %>%
  group_by(type) %>%
  group_nest(.key="data")
库(tidyverse)
种子(2)
N%
选择(-dummy)%>%
pivot_更长(cols=-c(type,xvals),name_to=“metric”,values_to=“value”)%>%
分组依据(类型)%>%
组嵌套(.key=“data”)
这将生成一个包含两列的TIBLE:

df
# A tibble: 3 x 2
  type   data             
  <fct>  <list>           
1 small  <tibble [30 x 3]>
2 medium <tibble [30 x 3]>
3 high   <tibble [30 x 3]>
df
#一个tibble:3x2
类型数据
1小
2中等
3高
这是我想在所有嵌套的Tibble中执行的操作的一个示例:

df[[2]][[1]] %>% 
  group_by(metric) %>%
  summarize(mean = mean(value))

# A tibble: 3 x 2
  metric   mean
  <chr>   <dbl>
1 A       0.211
2 B      -0.296
3 C      -0.391
df[[2][[1]]%>%
分组单位(公制)%>%
汇总(平均值=平均值)
#一个tibble:3x2
公制平均数
1 A 0.211
2b-0.296
3 C-0.391

组嵌套
之后,“数据”是
列表
列的
tible
s,只有两列“type”和“data”。如果我们需要根据
列表
列创建分组,请使用
映射
列表
中循环,然后按进行分组

library(dplyr)
library(tidyr)
library(purrr)

df %>%
    mutate(data  = map(data, ~ .x %>%
                                   group_by(metric)  %>%
              summarize(mean = mean(value)))) -> out

out$data[[1]]
# A tibble: 3 x 2
#  metric   mean
#  <chr>   <dbl>
#1 A       0.115
#2 B       0.323
#3 C      -0.326
库(dplyr)
图书馆(tidyr)
图书馆(purrr)
df%>%
变异(数据=映射(数据,~.x%>%
分组单位(公制)%>%
汇总(平均值=平均值))->out
out$data[[1]]
#一个tibble:3x2
#公制平均数
#     
#1 A 0.115
#2b0.323
#3 C-0.326

注意:输出值将不同,因为在
组嵌套之后没有
设置
种子

,只有两列
类型
数据
所需的输出是什么?您试图创建的tibble看起来像什么?您只能根据tibble在顶层的列对其进行分组。@akrun我根据您的评论更新了帖子。现在我的意图应该更清楚了。@LloydChristmas。你可以查我的资料