【问题标题】:How to merge values from another dataset with a value containing in the first dataset in R?如何将另一个数据集中的值与 R 中第一个数据集中包含的值合并?
【发布时间】:2020-10-23 06:38:45
【问题描述】:

我有以下两组数据:

我想通过以下方式合并以上两组数据。变量收入是一个分类变量,其取值范围为 0 到 16。对于每个该值,排名列恰好包含一个与收入中的值相等的值。我想附上在第二个数据集中的下限和上限排名中找到的收入值。关于如何做到这一点的任何见解?我是 R 新手。

【问题讨论】:

  • 您正在寻找merge 函数,类似于merge(df1,df2,all.x = T,by.x = "income",by.y = "rank")
  • 你也可以看看dplyr包中不同形式的join(比如sinner join、left_join、right_join和full_join)。
  • 我试过merge(dflapopofficial,wagecmp,all.dflapopofficial = T,by.dflapopofficial = "income",by.wagecmp = "rank")。它给了我一个只有零的列。

标签: r statistics


【解决方案1】:

dplyr 中的连接函数可以通过不同的变量使用命名向量连接数据帧,例如by = c('a' = 'b')。因此,使用 dplyr 的解决方案如下所示。

library(dplyr)

data1 <- tibble(income = c(0, 1, NA))

data2 <- tibble(rank = c(0, 1, 2),
                lowerLimit = c(0, 50, 150),
                upperLimit = c(50, 200, 175))

data1 %>%
  left_join(data2, by = c('income' = 'rank'))

#   income lowerLimit upperLimit
#    <dbl>      <dbl>      <dbl>
# 1      0          0         50
# 2      1         50        200
# 3     NA         NA         NA

【讨论】:

  • 当然@vahis100。该行本质上表示左连接(请参阅dplyr.tidyverse.org/reference/join.html)。插入by = c('income' = 'rank') 以指定“收入”和“排名”是重叠变量(执行连接所需的)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2018-04-25
相关资源
最近更新 更多