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

如何在R中按author_id合并多行数据为单行并导出文本文件

问题解决:按author_id分组并生成指定格式的文本文件

数据与需求说明

原始Excel数据结构

name    author_id   rating
Name1   Id 1        0.72
Name2   Id 2        0.9
Name3   Id 1        0.74
Name4   Id 1        0.76
Name5   Id 2        0.88
Name1   Id 3        0.8
Name3   Id 2        0.86
Name6   Id 3        0.84
Name3   Id 3        0.84
Name4   Id 4        0.78
Name1   Id 4        0.84
Name6   Id 5        0.84
Etc.    …             …

目标输出格式

需要按author_id分组,每个分组对应一行文本,内容为name与rating交替排列,用制表符分隔:

Name1   0.72  Name3  0.74  Name4  0.76
Name2   0.9   Name5  0.88  Name3  0.86
Name1   0.8   Name6  0.84 Name3  0.84
Name4   0.78  Name1  0.84    
Name6   0.84

原代码问题分析

你提供的代码存在两处关键问题:

  • summarise中重复定义rating参数,且paste的collapse参数位置错误,语法不合法
  • 逻辑上未实现name与对应rating的配对,只是单独合并所有name和所有rating,无法达到交替排列的效果

正确解决方案

以下是修正后的代码,可完全实现需求:

library(readxl)
library(dplyr)

# 读取Excel数据
df <- read_excel("/Users/admin/Documents/restaurants.xlsx")

# 按author_id分组,将每组的name和rating配对后合并为一行
df_grouped <- df %>%
  group_by(author_id) %>%
  summarise(content = paste(paste(name, rating, sep = "\t"), collapse = "\t"), .groups = "drop")

# 写入文本文件,不保留行名和列名
writeLines(df_grouped$content, con = "transactionsBy_author_id.txt")

代码说明

  1. 分组处理逻辑:
    • 内层paste(name, rating, sep = "\t"):将每个条目对应的name和rating用制表符连接,形成NameX\t0.XX的配对格式
    • 外层paste(..., collapse = "\t"):将组内所有配对后的内容合并成一行,保证name和rating交替排列
    • .groups = "drop":分组后取消分组状态,避免后续操作出现不必要的警告
  2. 文件写入:
    • 使用writeLines直接写入处理好的每行内容,确保输出格式与目标完全一致,不会额外添加列名、行号或多余分隔符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:54:52