数据矩形化?-如何基于唯一标识符将多行数据重新整形/折叠为R中的一个单元格?

数据矩形化?-如何基于唯一标识符将多行数据重新整形/折叠为R中的一个单元格?,r,reshape,tidyr,R,Reshape,Tidyr,我希望获取多行数据,并将它们折叠到每个唯一标识符的一个单元格中。我正在处理一个相当混乱、大小合适的数据帧,但下面是一个非常简单的示例,说明我正在努力实现的目标: mydf = data_frame(x=c(rep("A",3),rep("B",3),rep("C",3)), y=letters[1:9]) mydf # A tibble: 9 x 2 x y <chr> <chr> 1 A a

我希望获取多行数据,并将它们折叠到每个唯一标识符的一个单元格中。我正在处理一个相当混乱、大小合适的数据帧,但下面是一个非常简单的示例,说明我正在努力实现的目标:

mydf = data_frame(x=c(rep("A",3),rep("B",3),rep("C",3)),
                  y=letters[1:9])

mydf
# A tibble: 9 x 2
  x     y    
  <chr> <chr>
1 A     a    
2 A     b    
3 A     c    
4 B     d    
5 B     e    
6 B     f    
7 B     g    
8 B     h    
9 B     i  
如前所述,我的数据要大得多,也更混乱,希望最终会出现在一个闪亮的应用程序中,因此它需要完全自主,因此需要对可用的功能有一个坚实的理解,以使其工作。我想这可能需要更多的步骤,而不仅仅是
mutate
,可能需要创建一个类似于
better
的单独数据帧,然后
左键将其连接回原始数据帧


谢谢

我们需要一个小组,由
总结
将“y”包装在
列表中

out <- mydf %>%
        group_by(x) %>% 
        summarise(y = list(y))
# A tibble: 3 x 2
#  x     y        
#  <chr> <list>   
#1 A     <chr [3]>
#2 B     <chr [3]>
#3 C     <chr [3]>

out$y
#[[1]]
#[1] "a" "b" "c"

#[[2]]
#[1] "d" "e" "f"

#[[3]]
#[1] "g" "h" "i"
out%
分组依据(x)%>%
总结(y=列表(y))
#一个tibble:3x2
#xy
#      
#1A
#2 B
#3 C
出$y
#[[1]]
#[1] “a”“b”“c”
#[[2]]
#[1] “d”“e”“f”
#[[3]]
#[1] “g”“h”“i”

使用tidyr中的nest函数

library(tidyverse)
mydf %>% nest(-x)
# A tibble: 3 x 2
  x    data            
  <chr> <list>          
1 A     <tibble [3 x 1]>
2 B     <tibble [3 x 1]>
3 C     <tibble [3 x 1]>
库(tidyverse)
mydf%>%nest(-x)
#一个tibble:3x2
x数据
1A
2 B
3 C

太简单了!出于某种原因,我从未想过对任何其他定量总结使用
总结
。。。
library(tidyverse)
mydf %>% nest(-x)
# A tibble: 3 x 2
  x    data            
  <chr> <list>          
1 A     <tibble [3 x 1]>
2 B     <tibble [3 x 1]>
3 C     <tibble [3 x 1]>