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

如何正确使用dplyr合并行共享值至新列并基于共享值合并两表

问题1:用dplyr将行中共享值合并到新列

如果你的数据存在分组共享值(比如同一类别下的多行数据),可以通过group_by()配合字符串拼接函数实现合并,无需使用which():

示例数据:

library(dplyr)
library(stringr)

df <- tibble(
  group_id = c(1,1,2,2,3),
  item = c("apple", "banana", "orange", "grape", "mango")
)
  • 保留所有行,同时新增合并列:
df %>%
  group_by(group_id) %>%
  mutate(combined_items = str_c(item, collapse = ", ")) %>%
  ungroup()
  • 仅保留每组一行的合并结果:
df %>%
  group_by(group_id) %>%
  summarize(combined_items = str_c(item, collapse = ", ")) %>%
  ungroup()
问题2:基于特定共享值合并两个表格

dplyr提供了专门的连接函数,直接指定共享列即可完成合并,比which()更高效直观:

示例数据:

df1 <- tibble(
  user_id = c(1,2,3),
  name = c("Alice", "Bob", "Charlie")
)

df2 <- tibble(
  user_id = c(2,3,4),
  score = c(85, 92, 78)
)

常用连接方式:

  • 内连接:仅保留两表都存在共享值的行
inner_join(df1, df2, by = "user_id")
  • 左连接:保留左表所有行,匹配右表对应数据
left_join(df1, df2, by = "user_id")
  • 全连接:保留两表所有行,缺失值补NA
full_join(df1, df2, by = "user_id")

若两表共享列名不同,可指定对应关系:

left_join(df1, df2, by = c("id" = "user_id"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:40:40