You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将多行分组数据转换为多列宽表?

解决方案

你可以通过先为每个书籍的作者添加分组内序号,再使用pivot_wider()实现需求,之前没成功应该是缺少了生成序号的步骤。

代码实现

首先构造你的数据框:

library(tidyverse)

df <- tibble(
  book_title = c("book1", "book1", "book2", "book2", "book2", "book3", "book3"),
  author = c("bob", "jane", "alice", "fred", "greg", "louise", "sam")
)

然后执行转换:

df_wide <- df %>%
  group_by(book_title) %>%
  mutate(author_num = paste0("author_", row_number())) %>%
  ungroup() %>%
  pivot_wider(
    names_from = author_num,
    values_from = author
  )

运行后得到的df_wide就是你想要的格式:

# A tibble: 3 × 4
  book_title author_1 author_2 author_3
  <chr>      <chr>    <chr>    <chr>   
1 book1      bob      jane     NA      
2 book2      alice    fred     greg    
3 book3      louise   sam      NA      

关键说明

  • group_by(book_title) %>% mutate(author_num = paste0("author_", row_number())):为每个书籍下的作者按顺序生成author_1、author_2这样的列名标识,这是实现宽格式转换的核心前提。
  • pivot_wider()此时可以根据生成的标识列,将同一书籍的作者分别放到对应的列中,缺失的位置自动填充NA。

内容的提问来源于stack exchange,提问作者Kristina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:52:05