首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R dplyr创建函数,显示/打印两个数据文件中具有匹配记录/值的行数。

R dplyr创建函数,显示/打印两个数据文件中具有匹配记录/值的行数。
EN

Stack Overflow用户
提问于 2022-08-02 21:36:14
回答 1查看 38关注 0票数 1

根据下面的代码和数据,如何在两个print中得到一个具有matching值的行数(count)

The number of matching records between [insert dataframe 1 name] and [insert dataframe 2 name] are X based on [insert matching column name].

我知道我可以查看控制台中的显示器来实现这一点,但我想打印上面的消息也是个好主意,特别是当涉及到大量数据集时。为此,我可能需要创建一个函数,而我的函数创建技能目前还不够完善。

代码+数据:

代码语言:javascript
复制
    library(tidyverse)
    
    # Dummy data
    df1 = data.frame(v1 = c(1,2,3,4,5,6,7,8), 
                    v2 = c("A","E","C","B","B","C","A","E"))
    
    df2 = data.frame(v2 = c("D","E","A","C","D","B"), 
                    v3 = c("d","e","a","c","d","b")) 
    
    # Match values
    df_new = df1 %>%
        mutate(v2= as.character(v2)) %>% 
        left_join(df2) 

# Write code to print the number of matching records, stuck!!!
# The number of matching records between [insert dataframe 1 name] and [insert dataframe 2 name] are X based on [insert matching column name].
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 21:54:44

为此,我喜欢使用tidylog-package。

这个方便的包封装了大多数dplyr函数,包括*_join的函数,并为其中的几个函数(也包括filterdistinctmutate等)提供了打印输出。

代码语言:javascript
复制
library(dplyr)

df_new <- df1 |>
  mutate(v2 = as.character(v2)) |>
  tidylog::left_join(df2) 

输出:

代码语言:javascript
复制
Joining, by = "v2"
left_join: added one column (v3)
           > rows only in x   0
           > rows only in y  (2)
           > matched rows     8
           >                 ===
           > rows total       8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73214067

复制
相关文章

相似问题

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