如何在R中实现Dataframe特定行与单元格的合并转换
R语言实现Dataframe单元格合并转换的方法
你要的效果分两种实现场景:
场景1:控制台近似打印效果
原生R的data.frame本身不支持单元格合并,你可以通过构造新数据框实现近似打印效果,代码如下:
# 原始数据 asd <- data.frame(Col1 = c("A"),Col2 = c("B"),Col3 = c("C"),Col4 = c(1),Col5 = c(2),Col6 = c(3), Col7 = c("Z")) # 构造输出用数据 asd_output <- rbind( data.frame(Val = "Ques", Col1 = asd$Col1, Col2 = asd$Col2, Col3 = asd$Col3, Col7 = ""), data.frame(Val = "Ans", Col1 = asd$Col4, Col2 = asd$Col5, Col3 = asd$Col6, Col7 = asd$Col7) ) # 打印效果 print(asd_output, row.names = FALSE)
打印效果如下:
Val Col1 Col2 Col3 Col7 Ques A B C Ans 1 2 3 Z
场景2:导出到文档/网页的真正合并单元格效果
如果需要生成带真实跨行合并单元格的表格用于报告输出,可以用flextable包实现,代码如下:
# 安装依赖包(首次使用运行) install.packages("flextable") # 加载包 library(flextable) # 构造输出数据集 output_df <- data.frame( Val = c("Ques", "Ans"), Col1 = c(asd$Col1, asd$Col4), Col2 = c(asd$Col2, asd$Col5), Col3 = c(asd$Col3, asd$Col6), Col7 = c(asd$Col7, asd$Col7) ) # 生成合并单元格的表格 ft <- flextable(output_df) # 合并Col7列的两行 ft <- merge_v(ft, j = "Col7") # 设置居中对齐 ft <- align(ft, align = "center", part = "all") # 运行后可在RStudio查看器预览效果,也支持导出为Word、HTML、PDF格式 ft
生成的表格支持Col7单元格跨行合并,和你预期的效果完全一致。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

