首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有R函数用于选择2个数据帧的通用值?

是否有R函数用于选择2个数据帧的通用值?
EN

Stack Overflow用户
提问于 2019-06-12 19:32:23
回答 2查看 34关注 0票数 1

我正在尝试选择两个数据帧的通用值。我有一个big_df和一个small_df

我试图获得的是一个数据帧,其中只有"ID“值在两个数据帧中是相同的,并且我只对保留big_df而不是small_df感兴趣。

代码语言:javascript
运行
复制
library(dplyr)
df3 <- merge(big_df, small_df, by =("ID"))

> df3
  ID Age Name Colour
1  1  21    a   blue
2  4  20    d  green
3  8  87    h    red
4  9   9    i  black
代码语言:javascript
运行
复制
big_df <- data.frame("ID" = 1:10, "Age" = c(21,15,1,20,34,45,67,87,9,77), "Name" = c("a","b","c","d","e","f","g","h","i","l"))


> big_df
   ID Age Name
1   1  21    a
2   2  15    b
3   3   1    c
4   4  20    d
5   5  34    e
6   6  45    f
7   7  67    g
8   8  87    h
9   9   9    i
10 10  77    l

small_df <- data.frame("ID" = c(1,4,8,9), "Colour" = c("blue","green","red","black"))


> small_df
  ID Colour
1  1   blue
2  4  green
3  8    red
4  9  black

我想要不带颜色信息的。

代码语言:javascript
运行
复制
> df3
  ID Age Name 
1  1  21    a   
2  4  20    d  
3  8  87    h   
4  9   9    i  
EN

回答 2

Stack Overflow用户

发布于 2019-06-12 19:36:57

dplyrsemi_join()正是为此而设计的。

代码语言:javascript
运行
复制
big_df <- data.frame("ID" = 1:10, "Age" = c(21,15,1,20,34,45,67,87,9,77), "Name" = c("a","b","c","d","e","f","g","h","i","l"))
small_df <- data.frame("ID" = c(1,4,8,9), "Colour" = c("blue","green","red","black"))

library(dplyr)
semi_join(big_df,small_df,by='ID')
# 
#   ID Age Name
# 1  1  21    a
# 2  4  20    d
# 3  8  87    h
# 4  9   9    i
票数 2
EN

Stack Overflow用户

发布于 2019-06-12 19:35:39

我觉得你真正需要的是:

代码语言:javascript
运行
复制
#check which big IDs exist in small IDs and subset
big_df[big_df$ID %in% unique(small_df$ID), ]
# ID Age Name
#1  1  21    a
#4  4  20    d
#8  8  87    h
#9  9   9    i

所以,我认为在这种情况下你不需要加入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56561221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档