在R语言中合并两个数据框:重复一个数据框的值填充另一个
R语言数据框合并解决方案
你可以通过以下两种方式实现需求:
方法一:Base R(无需额外包)
# 重复df1的每一行,重复次数等于df2的行数(示例中为50) df1_repeated <- df1[rep(seq_len(nrow(df1)), each = nrow(df2)), ] # 将df2的所有列按顺序堆叠成一个数值向量 df2_stacked <- unlist(df2, use.names = FALSE) # 合并为最终数据框 result_df <- cbind(df1_repeated, value = df2_stacked)
方法二:Tidyverse工具包(代码更直观)
先确保安装并加载dplyr和tidyr:
install.packages("tidyverse") library(dplyr) library(tidyr)
然后执行以下代码:
# 将df2转换为长格式,提取所有数值 df2_long <- df2 %>% pivot_longer(cols = everything(), names_to = NULL, values_to = "value") # 重复df1的每一行,次数匹配df2的行数 df1_repeated <- df1 %>% slice(rep(row_number(), each = nrow(df2))) # 合并两个数据框 result_df <- bind_cols(df1_repeated, df2_long)
两种方法最终都会生成一个4000行(80*50)的新数据框,其中前3列是重复后的df1标签,第4列是df2所有列堆叠后的数值。
内容的提问来源于stack exchange,提问作者Molly Westbrook
相关产品推荐
相关产品推荐

