相关疑难解决方法(0)

如何加入(合并)数据框(内部,外部,左侧,右侧)?

给出两个数据框:

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))

df1
#  CustomerId Product
#           1 Toaster
#           2 Toaster
#           3 Toaster
#           4   Radio
#           5   Radio
#           6   Radio

df2
#  CustomerId   State
#           2 Alabama
#           4 Alabama
#           6    Ohio
Run Code Online (Sandbox Code Playgroud)

我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:

  • 一个内连接df1df2:
    只返回行中左表在右表匹配的密钥.
  • 一个外连接df1df2:
    返回两个表中的所有行,从有右表中的匹配键左连接记录.
  • 甲 …

merge join r dataframe r-faq

1155
推荐指数
13
解决办法
108万
查看次数

合并具有多个匹配项的数据帧时,仅选择第一行

我有两个数据框,"数据"和"分数",并希望将它们合并到"id"列:

data = data.frame(id = c(1,2,3,4,5),
                  state = c("KS","MN","AL","FL","CA"))
scores = data.frame(id = c(1,1,1,2,2,3,3,3),
                    score = c(66,75,78,86,85,76,75,90))
merge(data, scores, by = "id")                  
semi_join(data, scores, by = "id")                  
Run Code Online (Sandbox Code Playgroud)

在"得分"数据中,存在具有多个观察的"id",其中每个匹配在连接之后获得一行.见?merge:

如果有多个匹配,则所有可能的匹配每个贡献一行.

但是,我想只保留与表中第一个匹配对应的行scores.

半连接本来不错,但我无法从右表中选择得分.

有什么建议?

join r

11
推荐指数
3
解决办法
7788
查看次数

标签 统计

join ×2

r ×2

dataframe ×1

merge ×1

r-faq ×1