如何按x分组合并列以创建嵌套DataFrame?
在R中按分组创建嵌套DataFrame
问题描述
给定如下R DataFrame:
df <- data.frame(x = rep(c(1,2,3,4),times=3), y = rep(c("Y","W","T","R"),times=3), z = rep(c("A","B","C","D"),times=3))
数据预览:
x y z ========= 1 Y A 2 W B 3 T C 4 R D 1 Y A 2 W B 3 T C 4 R D 1 Y A 2 W B
需要按x的唯一值分组,将y和z列合并为嵌套的DataFrame列(命名为zy),最终得到如下结构的结果:
x zy ====== 1 <dataframe> 2 <dataframe> 3 <dataframe> 4 <dataframe>
解决方案
可以使用dplyr包的分组与嵌套功能实现,步骤如下:
- 加载
dplyr包(若未安装需先执行install.packages("dplyr")):
library(dplyr)
- 执行分组嵌套操作:
nested_df <- df %>% group_by(x) %>% nest(zy = c(y, z)) %>% ungroup() # 可选,移除分组标记,让结果成为普通DataFrame
说明
group_by(x):按x的唯一值对数据进行分组nest(zy = c(y, z)):将每组中的y和z列打包成一个嵌套的DataFrame,并将该列命名为zy- 查看嵌套内容:可以通过
nested_df$zy[[1]]查看x=1对应的嵌套DataFrame,输出如下:
y z 1 Y A 2 Y A 3 Y A
内容的提问来源于stack exchange,提问作者capiono
相关产品推荐
相关产品推荐

