通过两个数据帧中都存在但在一个数据帧中多次存在的两列合并两个不同长度的数据帧

问题描述 投票:0回答:1

我有两个数据框。一个主数据帧和一个补充数据帧。 这两个数据框都包含“年份”和“密度”列。 “年份”仅以六个不同的值出现(2010、2012、2014、2017、2020、2023)。这些是收集数据的年份。 “密度”仅存在五个不同的值(1、2、3、4、5)。 我的补充数据框有 30 行长,因此“年份”和“密度”的每个组合仅出现一次。补充数据框有第三列,称为“干旱”,它对于主数据框中尚未包含的所有 30 个组合都有唯一值。 我现在希望在我的主数据框中具有“干旱”的独特值。然而,我的主数据框更长,并且“密度”和“年份”的每种组合都有多次。 我如何合并这些数据框,以便在主数据框的每一行中拥有与“年份”和“密度”的 30 种组合相对应的“干旱”的正确值?

我尝试了一个简单的

left_join

main_df <- main_df |> 
  left_join(supp_df, by = c("year", "density"))

当我这样做时,我的主数据框中不会出现名为“干旱”的新列。

r dataframe merge
1个回答
1
投票

如果您的数据如您文字描述的那样,那么您尝试的应该有效。您需要调查您的描述不足之处,以使此工作示例无效

library(tidyverse)

set.seed(42)

(main_table <- expand_grid(
  year = c(2001, 2002),
  density = c(1, 2)
) |>
  sample_n(size = 10, replace = TRUE) |>
  mutate(
    other_facts_on_main_table = runif(10)
  ))

(supp_table <- expand_grid(
  year = c(2001, 2002),
  density = c(1, 2))|>
    mutate(
      drought = runif(4)
    ))

(fin_table <- left_join(main_table,
                       supp_table,
                       by = join_by(year, density)))
© www.soinside.com 2019 - 2024. All rights reserved.