【问题标题】:R: How can I transfer values from one data frame to another data frame depending on certain circumstances?R:如何根据特定情况将值从一个数据帧传输到另一个数据帧?
【发布时间】:2021-10-09 15:43:23
【问题描述】:

如果满足某些条件,R 中有没有办法将值从一个数据帧传输到第二个数据帧?具体来说,我关心以下问题:

我有数据框 1 中不同人的值(列:ISO-3 中的姓名、出生年份、出生地)和数据框 2 中不同国家/地区的政体分数(列:ISO-3 中的国家、年,分数)。我现在想根据国家和年份将数据框 2 中的相应政体分数添加到数据框 1 作为新列。我可以通过 R 自动化吗?

数据框 1

Name Country of Birth Year of Birth Polity Score
Name 1 USA 2018 Score from data frame 2
Name 2 DNK 1995 Score from data frame 2

数据框 2

Country Year Polity Score
USA 2018 10
DNK 1995 10

【问题讨论】:

  • 如果您能向我们展示您的数据将会非常有帮助...

标签: r dataframe if-statement


【解决方案1】:

您需要将 2 个表连接起来,有很多方法和包可以做到这一点,但我一直是 tidyverse 的粉丝,在这种情况下 dplyr joins

如果看不到您的桌子细节,它会看起来像这样。

df_joined <- left_join(df1, df2, by = c("Country of Birth" = "Country", "Year of Birth" = "Year")

【讨论】:

  • 问题在于,在数据框 2(政体分数)中有数千个值(对于 100 多年的世界所有国家)。但是,我只想为数据框 1(人)中的行传输相应的政体分数。
  • 快速阅读有关连接类型(左、内、外)的信息,上面的链接会稍微介绍一下,但在这种情况下,左连接将从 df1 获取项目并仅引入数据对应的国家和年份。
  • 我的错误,对不起。我刚刚在 R 中尝试过,它可以工作。感谢您的快速帮助!祝你一切顺利!
【解决方案2】:

使用base R

df_joined <- merge(df1, df2, by.x = c("Country of Birth", "Year of Birth"),
       by.y = c("Country", "Year"), all.x = TRUE)

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 2021-10-10
    • 2021-07-02
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多