首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在非合并时合并具有指示器变量的两个数据集

在非合并时合并具有指示器变量的两个数据集
EN

Stack Overflow用户
提问于 2020-01-13 14:52:05
回答 2查看 125关注 0票数 0

我有两个数据集。让我们称它们为主数据和使用数据。我使用3个键将使用数据合并到主数据中。我包含了all=TRUE参数,以保留所有合并和未合并的观测值

merged_data <- merge(dataset1, dataset2, by=c("key1","key2","key3"), all=T)

现在我的问题来了。如何获取主数据或使用数据中是否发生了未合并的信息?理想情况下,我需要一个有值的列

1) 1)如果由于使用数据而未合并2) 2)如果由于主数据而未合并3) 3)如果合并成功!!

谢谢,Kedar

EN

回答 2

Stack Overflow用户

发布于 2020-01-13 18:29:36

在这一点上,tidyverse可以提供帮助。

代码语言:javascript
复制
anti_join()

返回x中y中没有匹配值的所有行,仅保留x中的列。

因此,

代码语言:javascript
复制
dataset1 %>%
    anti_join(dataset2, by = c("joinColumn")

应该给出1中的内容,但不是由2连接的,并且

代码语言:javascript
复制
dataset2 %>%
    anti_join(dataset1, by = c("joinColumn")

应该会给出2中的内容,但不会被1连接。

票数 0
EN

Stack Overflow用户

发布于 2020-01-14 13:12:48

可能效率不高,但工作得很好。

代码语言:javascript
复制
dataset1$ind_data1 <-1 
dataset2$ind_data2 <-1

merged_data_all <- merge(dataset1, dataset2, 
by=c("key1","key2","key3", "Year"), all=T)
View(merged_data_all)


merged_data_all$ind_data1[is.na(merged_data_all$ind_data1)] <- 0
merged_data_all$ind_data2[is.na(merged_data_all$ind_data2)] <- 0

merge <- vector()
for(i in 1:length(merged_data_all$ind_data1)) {
if(merged_data_all$ind_data1[i]==1 & merged_data_all$ind_data2[i]==1) {
merge[i] = "match"
} else if(merged_data_all$ind_data1[i]==0 & merged_data_all$ind_data2[i]==1){
merge[i]="dataset 2 only"
} else{
merge[i]="dataset 1 only"
}
}

merged_data_all<- cbind(merged_data_all, merge)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59711736

复制
相关文章

相似问题

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